ASP.NET MVC3 とASP.NET MVC Sitemap Providerを使用しています。
アプリケーションという名前のコントローラーがあります。また、アドミニストレーションと呼ばれるエリアもあります。管理領域には、Application というコントローラーもあります。
最初のアプリケーション コントローラーは、通常の Web サイト ユーザー用です。もう 1 つのアプリケーション コントローラーは、管理者向けです。
URL を次のように表示したい:
/Application/1001/Notes
/Administration/Application/1001/Notes
上記の 2 つの URL のルート登録は次のとおりです。
Routes.MapRoute("ApplicationNote",
"{controller}/{applicationId}/Notes",
new { controller = "Application", action = "Notes" },
new { applicationId = @"\d+" },
new[] { "MyProject.Web.Controllers" });
Routes.MapRoute("AdminApplicationNote",
"{area}/{controller}/{applicationId}/Notes",
new { area = "Administration", controller = "Application", action = "Notes" },
new { applicationId = @"\d+" },
new[] { "MyProject.Web.Areas.Administration.Controllers" });
アプリケーションを実行し、アプリケーション コントローラーのいずれかのアクション メソッドに移動すると、次のエラーが表示されます。
@Html.MvcSiteMap().SiteMapPath()
エラーは次のとおりです。
Found multiple controllers:Application
これは私のサイトマップ構成の部分的なビューです:
<mvcSiteMapNode title="About" area="" controller="Home" action="About" />
<mvcSiteMapNode title="Applications" area="" controller="Application" action="Index" key="ApplicationIndex">
<mvcSiteMapNode title="Create Application" area="" controller="Application" action="Create" />
<mvcSiteMapNode title="Applications List" controller="Application" area="" action="List" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Administration Dashboard" area="Administration" controller="Dashboard" action="Index">
<mvcSiteMapNode title="Users Dashboard" area="Administration" controller="User" action="List" />
</mvcSiteMapNode>
どうすればこれを解決できますか? AdminApplicationNote というルートを削除すると、他のアプリケーション URL が正しく表示されます。しかし、その後、2 番目のエリア ルートを意図したとおりに動作させることができます。