我刚开始使用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并重建应用程序 - 没有变化。我无法弄清楚这个其他控制器的位置。
有什么想法吗?
答案 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" }
);
注意:您在创建项目时提供的项目名称