我有一個新的MVC4應用程序,我在VS11測試版中創建了MVC4互聯網項目模板。現在,當我將應用程序部署到我的網站託管提供程序,並且我的Global.asax類中保留下列行時,我收到有關MVC嘗試註冊已存在路線的錯誤。當我註釋掉這一行時,一切運行正常,但與區域特定控制器的操作鏈接已斷開,正如我在this question中詢問的那樣。爲什麼我的MVC4應用程序中的未修改模板代碼嘗試註冊兩次?
AreaRegistration.RegisterAllAreas();
我有一個新的MVC4應用程序,我在VS11測試版中創建了MVC4互聯網項目模板。現在,當我將應用程序部署到我的網站託管提供程序,並且我的Global.asax類中保留下列行時,我收到有關MVC嘗試註冊已存在路線的錯誤。當我註釋掉這一行時,一切運行正常,但與區域特定控制器的操作鏈接已斷開,正如我在this question中詢問的那樣。爲什麼我的MVC4應用程序中的未修改模板代碼嘗試註冊兩次?
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" });
你在你的路線命名空間衝突?意思是,你是否在你的路由定義中聲明瞭正確的命名空間,如下所示 - > http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx – Tommy 2012-07-22 23:56:41
如果你註釋掉那行,區域路由會因爲您在其他問題中發佈而失敗 - >因爲您從未註冊過這些區域。你需要弄清楚這個問題,所有'應該'都沒問題。嘗試一個更簡單的項目或修剪你的路由表,找到違規路線。命名空間對這些問題也有很大的幫助(上面的鏈接) – Tommy 2012-07-22 23:57:48