这是我的路由项目:
context.Result = new RedirectToRouteResult(new RouteValueDictionary(new {area="Identity", controller = "Account / Login", action = "Index" }));
应用程序启动时,这是我在URL中得到的:
如何从网址中删除%2f?
答案 0 :(得分:4)
当尝试从您的RouteValueDictionary
生成URL时,ASP.NET Core将/
编码为%2F
只是因为它是URL segment的一部分并且具有特殊含义(这是段分隔符。
Account/Login
作为控制器名称无效,仅仅是因为/
作为C#标识符的一部分无效(即Accounts/LoginController
无效)作为班级名称)。
当您尝试路由到Account/Login
区域中的Identity
时,我现在假设您正在使用ASP.NET Core Identity的Default UI,并且您正在目的是路由到默认/Account/Login
区域中的Identity
Razor Page 。为此,至少有两个选择:
设置page
路由值,而不是controller
路由值:
context.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { area = "Identity", page = "/Account/Login" }));
使用RedirectToPageResult
代替RedirectToRouteResult
:
context.Result = new RedirectToPageResult("/Account/Login", new { area = "Identity" });
我建议在这里使用RedirectToPageResult
选项,因为它的意图很明确,即它是针对Razor Page而不是MVC Controller。
答案 1 :(得分:0)
在重定向之前,使用 HttpServerUtility 的 UrlDecode (您的URL字符串)
。