ASP.NET MVC 2中具有一个名称的多个控制器

lov*_*iji 12 c# asp.net-mvc routing controllers asp.net-mvc-2

尝试运行我的ASP.NET MVC应用程序时收到以下错误:

对"帐户"的请求找到了以下匹配的控制器: uqs.Controllers.Admin.AccountController MvcApplication1.Controllers.AccountController

我搜索了项目MvcApplication1.Controllers.AccountController以删除它,但我找不到匹配项.

我尝试注册修复它的路线:

 routes.MapRoute(
     "LogAccount", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Account", action = "LogOn", id = "" },
     new string[] { "uqs.Controllers.Admin" } // Parameter defaults
 );
Run Code Online (Sandbox Code Playgroud)

但这并没有解决它.

找到了多个匹配名为"帐户"的控制器的类型.

我该如何解决这个问题?

Cra*_*ste 61

如果您重构项目并将默认命名空间和程序集从"MVCApplication1"更改为"uqs",则最终可能会在bin目录(新目录和旧目录)中使用2个程序集.您可以收到此错误,因为AccountController在两个程序集中.

清理旧MVCApplication1.dll的bin目录.

  • 欢呼男人,我之前遇到过这个问题并最终创建了一个新项目,因为我无法弄清楚问题是什么 - 我愚蠢地认为干净会清除bin文件夹,如果我改变了大会名称呃?? !! (7认同)
  • 这是正确的答案 - 应该被接受. (6认同)
  • 我重命名了我的项目并将旧的dll文件保存在我的bin文件夹中 - 这解决了我的问题.谢谢! (2认同)

Geo*_*ker 11

Account即使在不同的命名空间中,也不能在应用程序中指定多个控制器.

您必须将这些控制器拆分Area(ASP.NET MVC 2中的一项功能).

如果您进行查找,AccountController您将找到Account您的应用程序中指定的所有控制器; Areas如果你想要它们,或者删除它们,将它们移动到不同的地方.

  • 你确定吗?我有两个不同名称空间的控制器,一个继承自另一个,我不使用区域.在MapRoute中设置命名空间(就像上面的lovjii一样)修复了相同的确切错误消息.我的控制器是否继承了彼此的区别? (5认同)