2012-02-24 77 views
3

剛剛創建了一個新的MVC 4項目,並從MVC 3項目中複製了一些區域。我已經加倍檢查了我的所有web.configs和arearegistration.cs。我CONFIGS都指向剃刀和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)並使用區域時,還需要特別小心。也看到了這個問題:http://stackoverflow.com/questions/5092589/having-issue-with-multiple-controllers-of-the-same-name-in-my-project – 2012-02-24 01:27:58

+0

是我使用StructureMap – JBeckton 2012-02-24 01:34:09

+0

的可能重複[找到了多個類型匹配命名爲「家」的控制器(http://stackoverflow.com/questions/7842293/multiple-types-were-found-that-match-the-controller-named-home) – bummi 2013-09-24 11:21:40

回答

1

好吧,我想清楚發生了什麼事。我會回答我自己的問題,希望它能幫助別人。

通常,當您創建VS 2010中新的MVC項目你會得到什麼模板讓你儘可能的名字空間和掐滅家庭控制器或兩個。我喜歡將我的MVC應用程序分成通常的層(數據,型號&服務),每層都在它自己的項目中。然後我重命名我的web項目,將.web添加到項目名稱和名稱空間「MyWebProject.Web」中。

的模板創建了我之前的應用程序重命名web項目和掐滅家庭控制器我。由模板創建的主控制器位於MyWebProject.Controllers命名空間中,我的routes.MapRoutes()使用MyWebProject.Web.Controllers作爲參數。

一旦我通過移動模板創建我掐滅控制器到MyWebProject.Web.Controllers的命名空間解決了這一問題。

相關問題