我有一个新的 MVC4 应用程序,我在 VS11 beta 中使用 MVC4 互联网项目模板创建。现在,当我将应用程序部署到我的网站托管服务提供商,并在 Global.asax 类中保持以下行处于活动状态时,我收到有关 MVC 尝试注册已存在的路由的错误。当我注释掉这一行时,一切运行正常,但是到特定区域控制器的操作链接被破坏,正如我在这个问题中所问的那样。
AreaRegistration.RegisterAllAreas();
我有一个新的 MVC4 应用程序,我在 VS11 beta 中使用 MVC4 互联网项目模板创建。现在,当我将应用程序部署到我的网站托管服务提供商,并在 Global.asax 类中保持以下行处于活动状态时,我收到有关 MVC 尝试注册已存在的路由的错误。当我注释掉这一行时,一切运行正常,但是到特定区域控制器的操作链接被破坏,正如我在这个问题中所问的那样。
AreaRegistration.RegisterAllAreas();
如果您的部署 bin 目录中有旧的 dll(如果您在某个时候重命名了项目或 dll),那么您会收到此错误。
确保在部署时清理 bin 目录。
当您在与根网站中的控制器同名的区域中拥有控制器时,通常会发生这种情况。即“WebsiteNamespace.Controllers.HomeController”和“WebsiteNamespace.Areas.MyArea.Controllers.HomeController”。
为了纠正这个问题,您需要在您的基础网站路由上声明命名空间:
routes.MapRoute("Default", "{controller}/{action}/{id}", new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}, new[] { "WebsiteNamespace.Controllers" });