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

时间:2010-10-24 22:17:32

标签: asp.net-mvc-2 dotnetopenauth

我刚开始使用dotnetopenauth进行用户注册。这很棒,而且工作得很好。

现在的问题是,当我尝试去/ Home /时说:

,我收到了一个错误
  

发现多个类型与名为“Home”的控制器匹配。如果为此请求提供服务的路由('{controller} / {action} / {id}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由。

     

'Home'的请求找到了以下匹配的控制器:   OpenIdRelyingPartyMvc.Controllers.HomeController
  YourApp.Controllers.HomeController

问题是,我不知道 OpenIdRelyingPartyMvc.Controllers.Homecontroller来自哪里。我在我的应用程序的任何地方找不到任何“OpenIdRelyingPartyMvc”实例,保存2个位置,这两个位置都发生在UsersController中:

OpenIdRelyingParty openid = new OpenIdRelyingParty();

我尝试删除DLL并重建应用程序 - 没有变化。我无法弄清楚这个其他控制器的位置。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

更改项目的名称和默认命名空间后,我收到了相同的错误消息。

最后解决方案是手动删除debug-folder中的所有文件(“Clean Solution” - VS的功能在这种情况下没有帮助)。

答案 1 :(得分:3)

我的猜测是您将示例中的代码复制到您的代码库中,或者您正在引用DotNetOpenAuth 示例项目中的DLL。注意, OpenIdRelyingPartyMvc 是MVC示例的命名空间。

所以我的建议是首先从项目引用中删除所有DotNetOpenAuth库的实例。

答案 2 :(得分:0)

在route.config文件中使用它

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { "ProjectName.Controllers" }
);

注意:您在创建项目时提供的项目名称