2

私の 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」という名前のルートは既にルート コレクションに含まれています。ルート名は一意である必要があります。

ここで競合がどこにあるのかわかりません。または、何か不足していますか?

(参考までに、アクションの名前は無視してください。これらはテスト目的のためのものです...したがって、意味がありません。)

4

1 に答える 1

7

Application_Start で RegisterRoutes を 2 回呼び出している可能性があります。

問題は重複した `AreaRegistration.RegisterAllAreas(); です。ルート上および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 フォルダーを確認します。同じルートを RouteCollection に追加する別の .dll が存在する可能性があります。

これは、プロジェクトの名前を変更していたときに起こりました。bin フォルダーに 2 つの .dll がありました。

MyProject.Web.dll
MyProjectNewName.Web.dll
于 2013-10-09T05:40:10.180 に答える