区域路由的路由集合中已有路由



这是我的 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_default"的路由。路由名称必须是唯一的。

我看不出这里哪里有冲突。 还是我错过了什么?

(仅供参考,忽略操作的名称,它们仅用于测试目的...所以它们没有意义。

您可能在Application_Start中调用了两次RegisterRoutes。

问题是重复的'AreaRegistration.RegisterAllAreas((; on route and on global.asax

所以只需要这个:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

或执行以下步骤:-

检查您的回收站文件夹。也许还有另一个.dll将相同的路由添加到路由集合中。

当我重命名一个项目时,这发生在我身上。我的 bin 文件夹中有 2 个 .dll:

MyProject.Web.dll
MyProjectNewName.Web.dll

最新更新