dotnetopenauth - 升级到版本 4 后,OpenID 无法与 DotNetOpenAuth 一起使用

标签 dotnetopenauth filenotfoundexception

我刚刚将 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/

相关文章:

java - 在java中设置源和数据路径

java - FileNotFoundException - 进程无法访问文件

asp.net-mvc - DotNetOpenAuth 和 Facebook

c# - 未找到 OpenID 终结点

asp.net-mvc - 在 ASP.NET MVC 4 中使用 OAuthWebSecurity 时获取 Google 用户名?

尽管存在 Mac,Python pandas read_csv 返回 FileNotFoundError

java - 读取文件 - java.io.FileNotFoundException

asp.net-mvc - 为什么有关 openID 用户的信息不通过协议(protocol)传递?

c# - Twitter 的 OAuthWebSecurity "Remember me"

java - 为什么我看不到我在工作目录中创建的文本文件?