我有一个ASP.NET MVC 4应用程序,我正在尝试部署为Azure网站。我的应用在我的本地环境中运行良好。当我将网站发布到azure时,我收到以下错误:
Multiple types were found that match the controller named 'Root'. This can happen if the route that services this request ('') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'Views' has found the following matching controllers:
MyApp.HD.Web.Controllers.RootController
MyApp.Web.Controllers.RootController
为什么我会在Azure上收到此错误但不在本地?我无法弄清楚如何绕过它。
谢谢
答案 0 :(得分:1)
我以前遇到过这个问题。让我解释一下它为什么会发生。
我们在解决方案中添加了一个新项目,我们称之为NewProject
。此项目设置不正确,因此我们将其重新创建为NewProject2
。项目设置完成后,我们将其重命名为NewProject
。这是问题开始的时候。在某些构建配置下,我们得到了与您相同的错误。它抱怨名称空间NewProject
和NewProject2
的模糊控制器。执行find-in-files不会返回NewProject2
的匹配项。真是令人沮丧。鉴于这仅在某些构建配置下发生,这是一个重要的迹象,表明问题出在bin文件夹中的 left-over 引用。做干净似乎没有解决问题。最终解决方案是进行完整的代码清除。 DLL通常不会被提交到源代码控制。我备份并删除了所有代码并从源代码管理中恢复。问题不再发生。
值得一提的是,这个问题不是全球性的。它只发生在某些开发者机器上。我认为那些有影响的是在create1 / create2 / rename2 / delete1进程中从源代码控制中得到最新的那些。