Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MapPageRoute无法重定向到指定的aspx页面_Asp.net_Maproute - Fatal编程技术网

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

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",

我的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");


        }
但是,如果我尝试使用“login”或“login2”访问我的WebApp,我会收到一条“资源找不到”错误消息

  • 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

你确认你的方法被击中了吗?设置断点或添加日志记录?@mason是的,我通过Visual Studio在调试中运行了我的项目,并验证是否调用了应用程序_Start()和RegisterRoutes()。我对aspx和路由映射有点陌生,所以我不确定如何调试试图访问“/login”的流。网页直接出现404错误,没有达到我的任何调试点。您是否尝试过重新排列页面路径的映射顺序?也许在映射默认MVC路由之前映射它们?@mason:D所以我刚刚找到另一篇文章,展示了如何跟踪路由表查找,我注意到我没有得到正确的路由。然后我看到了你的评论,所以我把我的路线移到了顶端……还有……魔术。它正在工作。谢谢