C# MVC中与路由相关的问题

C# MVC中与路由相关的问题,c#,asp.net-mvc,routing,C#,Asp.net Mvc,Routing,我有MVC网络应用程序。我在Route.config文件中编写了以下规则 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url:

我有MVC网络应用程序。我在Route.config文件中编写了以下规则

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 }
            );
            routes.MapRoute(
              name: "about",
              url: "Home/About-WDI",
              defaults: new { controller = "Home", action = "About"}
            );


        }
在global.asax文件中,我编写了以下代码:

RouteConfig.RegisterRoutes(RouteTable.Routes);
现在的问题是当我输入
http://localhost:60123/Home/About-WDI
它给我一个错误,说
未找到资源

以上代码中有什么问题?
谢谢

如评论中所述,考虑到路线的顺序。由于{id}参数是可选的,所以URL将由第一条路由匹配。因此,只需交换两条路线:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
              name: "about",
              url: "Home/About-WDI",
              defaults: new { controller = "Home", action = "About"}
            );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

正如评论中已经提到的,考虑到路线的顺序。由于{id}参数是可选的,所以URL将由第一条路由匹配。因此,只需交换两条路线:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
              name: "about",
              url: "Home/About-WDI",
              defaults: new { controller = "Home", action = "About"}
            );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

路线定义的顺序很重要(第一场比赛获胜)。将
关于
路线放在
默认
路线之前,您的操作名称是什么,关于还是关于WDI?默认路线始终放在最后(最常见的路线)。最上面的路线应该是最具体的路线定义。路线定义的顺序很重要(第一场比赛获胜)。将
关于
路线放在
默认
路线之前,您的操作名称是什么,关于还是关于WDI?默认路线始终放在最后(最常见的路线)。最上面的路线应该是最具体的路线定义。