私のプロジェクトには2つの分野があります。プログラムを実行すると、次のエラーが発生します。
Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'Home' has found the following matching controllers:
BaseAdminMVC.Areas.BaseAdmin.Controllers.HomeController
BaseAdminMVC.Areas.TitomsAdmin.Controllers.HomeController
ここでいくつかのソースを見つけました: 複数のコントローラー名
しかし、それは1つの領域でしか機能しないと思います。
私の場合、異なる分野で2つのプロジェクトがあります。誰かが問題を解決するために私が何をすべきかを教えてくれることを願っています。
これがGlobal.asax
ファイル:
public static void RegisterRoutes(RouteCollection routes)
{
string[] namespaces = new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers", "BaseAdminMVC.Areas.TitomsAdmin.Controllers"};
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces
);
}
ちなみに、HomeController
フォルダーの外にもコントローラー( "Area
")があります。これは、2つのプロジェクトBaseAdmin
とTitomsAdmin
へのリンクを提供するだけです。
私はこの解決策を試しましたが、それでもは機能しません:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"BaseAdmin",
"BaseAdmin/{controller}/{action}",
new { controller = "Account", action = "Index" },
new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers" }
);
routes.MapRoute(
"TitomsAdmin",
"TitomsAdmin/{controller}/{action}",
new { controller = "Home", action = "Index" },
new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" }
);
前もって感謝します!!
何が起こるかわかりませんが、このコードは正常に機能します。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" }
);
}
プロジェクトの名前空間/アセンブリの名前を変更した後、このエラーが発生しました。
Namespace/Assemblyの名前を変更した場合、binフォルダーに以前の名前のAssembly/dllが残っている可能性があります。そこから削除するだけで動作するはずです。
プロジェクトを右クリックし、[プロジェクトのクリーンアップ]を選択します。または、binディレクトリを完全に空にしてから、再ビルドします。これにより、残っているアセンブリがすべて削除されます。