Asp.net MapPageRoute无法重定向到指定的aspx页面
我的RouteConfig.cs文件中有以下内容Asp.net MapPageRoute无法重定向到指定的aspx页面,asp.net,maproute,Asp.net,Maproute,我的RouteConfig.cs文件中有以下内容 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default",
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");
}
但是,如果我尝试使用“login”或“login2”访问我的WebApp,我会收到一条“资源找不到”错误消息
- http://localhost:4200/login2 -失败
- http://localhost:4200/login -失败
- http://localhost:4200/Login.aspx -装载良好
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 你确认你的方法被击中了吗?设置断点或添加日志记录?@mason是的,我通过Visual Studio在调试中运行了我的项目,并验证是否调用了应用程序_Start()和RegisterRoutes()。我对aspx和路由映射有点陌生,所以我不确定如何调试试图访问“/login”的流。网页直接出现404错误,没有达到我的任何调试点。您是否尝试过重新排列页面路径的映射顺序?也许在映射默认MVC路由之前映射它们?@mason:D所以我刚刚找到另一篇文章,展示了如何跟踪路由表查找,我注意到我没有得到正确的路由。然后我看到了你的评论,所以我把我的路线移到了顶端……还有……魔术。它正在工作。谢谢