找到了多个与名为“帐户”的控制器匹配的类型。 MVC 4 & 使用 RouteConfig.CS

Posted

技术标签:

【中文标题】找到了多个与名为“帐户”的控制器匹配的类型。 MVC 4 & 使用 RouteConfig.CS【英文标题】:Multiple types were found that match the controller named 'Account'. MVC 4 & using RouteConfig.CS 【发布时间】:2013-09-23 03:49:02 【问题描述】:

我目前在同一个文件夹中有 2 个项目。 主要

项目1 项目2

问题:

找到了与名为 Account 的控制器匹配的多种类型。如果服务此请求的路由('controller/action/id') 未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用 namespaces 参数的 MapRoute 方法的重载来注册此路由。

Account 的请求找到了以下匹配的控制器:

Project1.Controllers.AccountController

Project2.Controllers.AccountController

我使用的是 Foundation 4。 提前感谢

【问题讨论】:

你有两个 MVC web 项目,都有控制器..??? 我认为他的意思是区域,但我实际上不确定。我不敢纠正他的问题。至少他应该使用区域。 【参考方案1】:

您需要使用带有此签名的版本

public static Route MapRoute(
       this RouteCollection routes,
       string name,
       string url,
       Object defaults,
   string[] namespaces )

要使其正常工作,只需设置两条几乎相同的路由 - 一条包含命名空间参数的 project1,然后是第二个相同的版本,但在命名空间参数中使用 project2。也就是说,如果可以的话,使用不同的名称通常不会那么混乱……

routes.MapRoute(
    name: "Default_Project1",
    url: "controller/action/id",
    defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[]  "Project1"  
);

routes.MapRoute(
    name: "Default_Project2",
    url: "controller/action/id",
    defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[]  "Project2" 
);

【讨论】:

您可以编辑您的第一个答案,而不是单独发布它们。【参考方案2】:

当我复制一个 MVC 项目并重命名所有命名空间时,我遇到了同样的问题。

我尝试了上述解决方案,但没有奏效。

即使在我清理和重建项目之后,Visual Studio 仍在查看旧的命名空间 dll。

所以解决办法:

右击解决方案,点击“清理解决方案” 手动删除 /bin 和 /obj 文件夹中的所有内容 构建您的解决方案

【讨论】:

我也做过同样的事情。我复制了一个 MVC 项目,认为删除我不需要的东西比从头开始创建所有内容(甚至零碎复制)更容易,我收到了这个错误。这解决了我的问题。 救命稻草。必须完全重命名解决方案/项目/命名空间,并且在手动编辑所有文件后找不到引用旧命名空间的任何地方。你是一个学者,一个绅士!

以上是关于找到了多个与名为“帐户”的控制器匹配的类型。 MVC 4 & 使用 RouteConfig.CS的主要内容,如果未能解决你的问题,请参考以下文章

找到多个与名为“Home”的控制器匹配的类型

找到多个与名为“Home”的控制器匹配的类型

找到多个与名为“Home”的控制器匹配的类型

找到多个与名为“Home”的控制器匹配的类型

MVC & WebAPI“找到多个类型匹配名为...的控制器”

找到多个与名为“Home”的控制器匹配的类型。解决方法