Asp.net mvc ASP.Net MVC 4-找到多个与名为';主页&x27;。

Asp.net mvc ASP.Net MVC 4-找到多个与名为';主页&x27;。,asp.net-mvc,asp.net-mvc-areas,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc Areas,Asp.net Mvc 4,刚刚创建了一个新的MVC4项目,并从MVC3项目复制了一些区域。我已经仔细检查了我所有的web.configs和arearegistration.cs。My configs all指向razor和MVC以及My routes的正确版本。MapRoute签名包括正确的命名空间参数,我还检查并确保我的IIS池没有承载多个MVC应用程序 我的Global.asax文件 routes.MapRoute( "Default", // Route name "

刚刚创建了一个新的MVC4项目,并从MVC3项目复制了一些区域。我已经仔细检查了我所有的web.configs和arearegistration.cs。My configs all指向razor和MVC以及My routes的正确版本。MapRoute签名包括正确的命名空间参数,我还检查并确保我的IIS池没有承载多个MVC应用程序

我的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" }
        );
而且

context.MapRoute(
            "Terminator_default",
            "Terminator/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "MVCProject.Web.Areas.Terminator.Controllers" }
        );
我已经检查了我所知道的一切来解决这个问题
,也加载了正确的dll区域…

好的,我知道发生了什么。我会回答我自己的问题,希望它能帮助别人

通常,当您在VS2010中创建一个新的MVC项目时,您会得到模板提供的名称空间和一个或两个存根的主控制器。我喜欢将我的MVC应用程序分成通常的层(数据、模型和服务),每一层都在它自己的项目中。然后我重命名我的web项目,将.web附加到项目名称和名称空间“MyWebProject.web”中

该模板在我重命名web项目之前创建了应用程序,并为我创建了一个主控制器。模板创建的主控制器位于MyWebProject.Controllers命名空间中,my routes.MapRoutes()使用MyWebProject.Web.Controllers作为参数

一旦我将模板创建的存根控制器移动到MyWebProject.Web.controllers名称空间中,它就解决了问题。

另一个可能导致此问题的原因如下:


您是否使用自定义依赖项/控制器解析程序?在实施自定义分解器(即用于Windsor)和使用区域时,必须特别小心。另请参见此问题:可能重复的