MapPageRoute无法重定向到指定的aspx页面



我的RouteConfig.cs文件中有以下内容

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
// route default URL to index.aspx
routes.MapPageRoute(
routeName: "LoginPageRoute",
routeUrl: "login",
physicalFile: "~/Login.aspx"
);
routes.MapPageRoute("LoginPageRoute2", "login2", "~/Login.aspx");

}

然而,如果我尝试使用";登录";或";login2";我得到一个资源找不到错误消息。

  • http://localhost:4200/login2-失败
  • http://localhost:4200/login-失败
  • http://localhost:4200/Login.aspx-负载良好

My Global.asax具有以下

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}

我的问题下有人的评论引导我找到了解决方案,即将我的自定义路线移动到默认路线之前。

在Global.asax中添加以下内容有助于证明这确实是问题所在。


public override void Init()
{
base.Init();
this.AcquireRequestState += showRouteValues;
}
protected void showRouteValues(object sender, EventArgs e)
{
var context = HttpContext.Current;
if (context == null)
return;
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
}

在上设置断点

var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));

展示了我的";登录";映射使用默认的路由映射,而不是我的自定义路由映射。

再次感谢@mason!

最新更新