Asp.net mvc 4 区域路由的路由集合中已存在路由

Asp.net mvc 4 区域路由的路由集合中已存在路由,asp.net-mvc-4,Asp.net Mvc 4,以下是我的mvc项目的主要路由表: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { AreaRegistration.RegisterAllAreas(); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Default",

以下是我的mvc项目的主要路由表:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        AreaRegistration.RegisterAllAreas();
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
    }
}
我有一个叫Docs的区域,这是它的注册信息:

public class DocsAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get{ return "Docs";}
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute("Docs_default", "Docs/{controller}/{action}", new { controller = "Wiki", action = "Index" });


        context.MapRoute("RESTApi", "wiki/restAPI/v1", new { controller = "Wiki", action = "RestAPI" });


        context.MapRoute("RESTApi", "wiki/test", new { controller = "Wiki", action = "action1" });
        context.MapRoute("RESTApi_test0", "wiki/test0", new { controller = "Wiki", action = "action2" });
        context.MapRoute("RESTApi_test1", "wiki/test2", new { controller = "Wiki", action = "productions" });
        context.MapRoute("RESTApi_test2", "wiki/test3", new { controller = "Wiki", action = "action3" });
        context.MapRoute("RESTApi_test3", "wiki/test4", new { controller = "Wiki", action = "action4" });
    }
}
我收到运行时错误:名为“Docs\u default”的路由已在路由集合中。路由名称必须是唯一的

我看不出这里有什么冲突。还是我遗漏了什么


(仅供参考,忽略操作的名称,它们只是用于测试目的…因此它们没有意义。)

您可能在应用程序启动时调用了两次RegisterRoutes

问题是重复的'AreaRegistration.RegisterAllEAS();在route和global.asax上

因此,我们只需要:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
或者执行以下步骤:-

检查您的bin文件夹。可能还有另一个.dll将相同的路由添加到RouteCollection

这发生在我重命名项目时。我的bin文件夹中有2.dll:

MyProject.Web.dll
MyProjectNewName.Web.dll

谢谢我现在唯一的问题是它碰到了主路由表的默认路由。我希望它在应用程序启动时按我所在区域的默认路线。因此,只需通过此链接,您可能会发现一些有用的东西。。