2012-07-18 25 views
0

我有一个新的MVC4应用程序,我在VS11测试版中创建了MVC4互联网项目模板。现在,当我将应用程序部署到我的网站托管提供程序,并且我的Global.asax类中保留下列行时,我收到有关MVC尝试注册已存在路线的错误。当我注释掉这一行时,一切运行正常,但与区域特定控制器的操作链接已断开,正如我在this question中询问的那样。为什么我的MVC4应用程序中的未修改模板代码尝试注册两次?

AreaRegistration.RegisterAllAreas(); 
+0

你在你的路线命名空间冲突?意思是,你是否在你的路由定义中声明了正确的命名空间,如下所示 - > http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx – Tommy 2012-07-22 23:56:41

+0

如果你注释掉那行,区域路由会因为您在其他问题中发布而失败 - >因为您从未注册过这些区域。你需要弄清楚这个问题,所有'应该'都没问题。尝试一个更简单的项目或修剪你的路由表,找到违规路线。命名空间对这些问题也有很大的帮助(上面的链接) – Tommy 2012-07-22 23:57:48

回答

1

如果在您的部署bin目录中的旧的DLL(如果您重命名您的项目或在某一点的dll),那么你会得到这个错误。

确保在部署时清理bin目录。

0

这通常发生在当您的根网站中的控制器与控制器名称相同的区域中有控制器时。即“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" }); 
相关问题