MVC 中的路由不起作用

Routing in MVC is not working

我正在阅读一本关于 MVC 的电子书。
它有以下示例,但其中 none 正在运行。

routes.MapRoute("", "X{controller}/{action}");

routes.MapRoute("", "Public/{controller}/{action}",
    new { controller = "Home", action = "Index" });

他们都会去首页controller和索引action

Link 第一条路线:http://localhost:14099/XHome/Index
Link 第二条路线:http://localhost:14099/Public/Home/Index

两者的输出应该与书中的示例相同。但是当我尝试相同时,它没有给出任何结果。即 resource cannot be found. 我在这里做错了什么吗?

以下是我编写的代码:

public static void RegisterRoutes(RouteCollection routes)
        {

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
            routes.MapRoute("", "X{controller}/{action}");
            routes.MapRoute("MyRoute", "{controller}/{action}",
            new { controller = "Home", action = "Index" });
            routes.MapRoute("", "Public/{controller}/{action}",
            new { controller = "Home", action = "Index" });
        }

我在默认之后写路由是错误的,所以我不得不在默认之前写它,这很明显。

   public static void RegisterRoutes(RouteCollection routes)
            {
    routes.MapRoute("", "X{controller}/{action}");
                routes.MapRoute("MyRoute", "{controller}/{action}",
                new { controller = "Home", action = "Index" });
                routes.MapRoute("", "Public/{controller}/{action}",
                new { controller = "Home", action = "Index" });
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );

        }