【问题标题】:Rename ASP.NET MVC project resulting in multiple types for controller error重命名 ASP.NET MVC 项目导致控制器错误的多种类型
【发布时间】:2011-09-16 11:41:27
【问题描述】:

这以前发生过,我不记得我是如何解决的。我重命名了一个 MVC 项目,然后进行了 ReSharper 重构以更新命名空间。现在,当我运行项目时,出现以下错误:

Multiple types were found that match the controller named 'Dashboard'. This can happen if the route that services this request ('{controller}/{action}/{id}') 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 'Dashboard' has found the following matching controllers:
EkmDomains.FrontEnd.Controllers.DashboardController
EkmDomains.Web.Controllers.DashboardController

我已经在解决方案中搜索了旧的 EkmDomains.FrontEnd 命名空间出现的所有地方,并将其替换为新命名空间,但无济于事......

有人有什么想法吗?

【问题讨论】:

    标签: c# asp.net-mvc-3


    【解决方案1】:

    哈哈,我只记得上次我是怎么做的——你必须手动从 bin 文件夹中删除旧的 dll。进行清理并不能摆脱它们,因为清理只会删除与项目名称匹配的 DLL - 因此它会使用旧项目名称保留 DLL。

    【讨论】:

    • 这只是发生在我身上,真的是*facepalm* 时刻之一。
    • 是的,但是一个持续几个小时的捂脸时刻!
    • 为什么我在 3 小时前没有找到这个解决方案?!
    • 我什至没有得到那个评论。仅用于控制器操作(webapi)的 404。使用不同的名称创建另一个控制器,但名称空间、方法和路由完全相同。但原来的?不......我希望我在 5 小时前找到了这个。我以前发现这样做也解决了在 git 分支之间交换时的一些 nuget 包版本问题。 “清洁解决方案”就像开车穿过水坑来清洁您的汽车,但事实并非如此。
    • *facepalm* 的时刻恰好发生在我身上.. +1
    【解决方案2】:

    为其他人添加更多内容。这些让我失去了生命中的一个小时,我再也回不来了。

    1. 不仅删除\bin文件,还删除\obj\debug和\release。

    2. 删除临时 ASP.NET 文件。

    3. 检查 web.config 中对旧 DLL 名称的任何引用。

    4. 检查所有 web.config 文件。有时也会将一个添加到 Views 文件夹中。

    【讨论】:

    • 对我来说,关键是在 Views/Web.config 下,在重命名我的项目后,命名空间仍然停留在旧的位置,谢谢!
    【解决方案3】:

    或者,您可以按照这些简单的步骤操作。

    1. 转到您的项目解决方案资源管理器
    2. 右键单击 Global.asax 文件
    3. 选择“打开方式”选项
    4. 选择“带编码的 Global.asax 文件编辑器”
    5. 点击确定,您可以自己修改代码来纠正错误。

    试试吧!它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2014-03-09
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      相关资源
      最近更新 更多