我刚刚将我的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
答案 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>