Asp.net mvc MVC路由排序

Asp.net mvc MVC路由排序,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我有这两条规则 routes.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index" }); routes.MapRoute("Custom", "X{controller}/{action}"); 有一个名为Custom and method Index的控件,但调用localhost/XCustom/Index会得到404 我曾读到,在找到匹配项之前,会一直尝试路由。

我有这两条规则

routes.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index" });
routes.MapRoute("Custom", "X{controller}/{action}");
有一个名为Custom and method Index的控件,但调用localhost/XCustom/Index会得到404

我曾读到,在找到匹配项之前,会一直尝试路由。 既然url与第一条路径不匹配,为什么不尝试与第二条路径匹配呢


*我知道如果我更改路由顺序,这会起作用。

问题是,使用{controller}/{action}路由,系统会尝试查找名为XCustomController的控制器,而您没有。因此,实际上url与您的路由匹配,您未能为其提供有效的控制器。

它确实与它尝试查找的第一个控制器匹配,该控制器名为XCustom,但不存在。您还没有为第二个指定控制器和操作。我认为匹配意味着也要找到控制器。很遗憾,事实并非如此,否则您需要为项目中的每个控制器和操作编写一个路由: