Asp.net mvc MVC 4普通区域路由自动管理区域

Asp.net mvc MVC 4普通区域路由自动管理区域,asp.net-mvc,routing,routes,Asp.net Mvc,Routing,Routes,我有这些路线 routes.MapRoute( "Default", "{controller}/{action}/{id}", new {area="", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "WebControllers.Controllers" }); routes.M

我有这些路线

  routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new {area="", controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "WebControllers.Controllers" });

  routes.MapRoute(
           "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new {Area="Admin", Controller = "Home", action = "Index", id = UrlParameter.Optional },
          new[] { "WebControllers.Areas.Admin.Controllers" });
我在管理区有用户控制器。当我尝试联系/admin/users时,一切正常。 但即使我在正常区域没有用户控制器,/users路由到/admin/users控制器,但它找不到视图并给出错误信息


我如何防止/users路径路由到/admin/users?

我不确定我是否完全理解这个问题,但我相信解决方案是更改MapRoute调用的顺序。您应该按路线的具体程度顺序添加路线

例如,如果按此顺序添加管线

 {controller}/{action}/{id}
 Admin/{controller}/{action}/{id}
与控制器/操作/id匹配的任何url都将被匹配和路由。第二条路线永远不会被使用

但是,如果您交换订单,mvc将首先匹配Admin/controller/action/id。从本质上讲,路由将在第一次运行后停止检查匹配项