升级到ver4后,OpenID不能与DotNetOpenAuth一起使用

时间:2012-03-24 19:49:19

标签: 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 ver 1.0以获得所需的dll。安装后不会抛出任何异常,而是显示包含文本“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”的白页,而不是重定向到OpenID服务提供程序。我不明白这个..

// Per Andersson

1 个答案:

答案 0 :(得分:2)

是的,我找到了解决方案。只需在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>