2012-02-24 7 views
3

新しいMVC 4プロジェクトを作成し、MVC 3プロジェクトから一部の領域にコピーしました。私はすべての私のweb.configsとarearegistration.csをダブルチェックしました。私の設定はすべて、正しいバージョンのrazorとMVCを指していて、routes.MapRouteシグネチャには正しい名前空間パラメータが含まれています。私はIISプールが複数のMVCアプリケーションをホストしていないことを確認しました。私が知っているすべてをチェックしてASP.Net MVC 4 - 「Home」というコントローラに一致する複数のタイプが見つかりました。

context.MapRoute(
      "Terminator_default", 
      "Terminator/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new string[] { "MVCProject.Web.Areas.Terminator.Controllers" } 
     ); 

私のGlobal.asaxファイル...

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
      new string[] { "MVCProject.Web.Controllers" } 
     ); 

私の地域の登録ファイル...

context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new string[] { "MVCProject.Web.Areas.Admin.Controllers" } 
     ); 

と...この を修正するためにチェックするには、正しいdllの領域もロードしてください...

+0

カスタム依存関係/コントローラリゾルバを使用していますか?カスタムリゾルバ(Windsor用)を実装してAreaを使用する場合は、特別な注意が必要です。また、この質問を参照してください:http://stackoverflow.com/questions/5092589/having-issue-with-multiple-controllers-of-the-nameame-in-my-project –

+0

はい私はStructureMap – JBeckton

+0

の可能な複製を使用しています[複数の種類が 'Home'というコントローラに一致するものが見つかりました](http://stackoverflow.com/questions/7842293/multiple-types-were-found-that-match-the-controller-named-home) – bummi

答えて

1

私は何が起こっていたのか理解しました。私は自分の質問に答えて、それが他の人を助けることを望んでいます。

通常、VS 2010で新しいMVCプロジェクトを作成すると、名前空間とスタブアウトされたホームコントローラまたは2つまでのテンプレートが表示されます。私はMVCアプリケーションを通常のレイヤー(データ、モデル&サービス)に分割し、それぞれのレイヤーをそれ自身のプロジェクトにするのが好きです。次に、Webプロジェクトの名前を変更して、.webをプロジェクト名と名前空間 "MyWebProject.Web"に追加します。

テンプレートは、私がウェブプロジェクトの名前を変更する前にアプリを作成し、私のためのホームコントローラをスタブアウトしました。テンプレートによって作成されたホームコントローラはMyWebProject.Controllers名前空間にあり、routes.MapRoutes()はMyWebProject.Web.Controllersをパラメータとして使用しました。

テンプレートで作成したスタッブアウトされたコントローラをMyWebProject.Web.Controllers名前空間に移動すると、問題が修正されました。

関連する問題