我刚刚将 DotNetOpenAuth 版本从 3.4.7.11121 升级到 4.0.0.12079-RC1 以获取对 OAuth2 的支持。问题是升级后我的 OpenID 请求不再有效。下面的最后一行生成 FileNotFoundException(Message=无法加载文件或程序集“System.Web.Mvc,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。)
OpenIdRelyingParty openid = new OpenIdRelyingParty()
var request = openid.CreateRequest(requestedIdentifier, Realm.AutoDetect, returnUrl);
return request.RedirectingResponse.AsActionResult();
我真的不明白它为什么要查找该文件。我在 MVC3 应用程序中使用 DotNetOpenAuth 库,因此项目中存在 3.0 版本的 System.Web.Mvc 文件。
有人知道我可以做些什么来让它发挥作用吗?
更新:在我发布此问题几个小时后,稳定的 4.0.0.12084 版本发布了。我已经安装了它而不是 RC,但没有任何区别。我尝试安装 MVC 1.0 版以获得所需的 dll。安装后不会引发异常,而是显示包含文本“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”的白页,而不是重定向到 OpenID 服务提供商。我不明白这个..
//佩尔·安德森
最佳答案
是的,我找到了解决方案。只需在 web.config 中添加几行
<runtime>
<legacyHMACWarning enabled="0" />
<!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink
to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it. -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
关于dotnetopenauth - 升级到版本 4 后,OpenID 无法与 DotNetOpenAuth 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9854975/