2012-02-09 17 views
1

我创建一个新的asp.net mvc 4版本和 包括dotnetopenauth实现从Nerddinner项目到它。错误与@ MvcHtmlString.Create(...)) - system.web.mvc

使用formsauthentication进行注册和身份验证工作正常。在 另一方面,当我包括登录详细信息openauth - logonopenid.cshtml - 实现我收到一个错误:

“无法加载文件或程序集“System.Web.Mvc,版本= 1.0.0.0, 文化=中性公钥= 31bf3856ad364e35' 或它 的一个依赖的位于组件的清单定义不 匹配的组件参考。(从HRESULT异常:0x80131040)“

源错误:

Line 38: @MvcHtmlString.Create(Html.OpenIdSelectorScripts(options, 
null)) 

我检查过,我使用的是system.web.mvc版本= 4,其中包含针对mvchtmlstring的 定义,html帮助程序包含针对openidselectorscripts的定义 。真的我不知道为什么要求 程序集1.0.0。 任何帮助将不胜感激。 brgds, 塞巴斯蒂安。

回答

2

您需要将它添加到你的web.config文件:

<runtime> 
    <!-- When targeting ASP.NET MVC 4, this assemblyBinding makes MVC 1 references relink 
     to MVC 4 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="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
+0

太棒了,非常感谢你...在我的情况下,这是声明,但包含在 我不知道为什么system.web.mvc再次被包含在系统内.web.web页面也是如此。我评论了这个领域并且工作得很好。非常感谢! – 2012-02-09 21:05:52

1

sebastian_h,

我以前见过这种情况。 '遥远'的内存回想起与位于/ Views文件夹(而不是根web.config文件)下的web.config中的条目有关的问题。

我可能会离开这里,但这会响起一个钟声。当然值得一看。

+0

感谢@jim我会检查,如果我发现在位于内部的意见web.config中的任何不一致。 – 2012-02-09 07:41:47