将MVC4作为虚拟目录部署到IIS6中的MVC3网站条目无法加载程序集

时间:2013-09-27 13:52:18

标签: asp.net-mvc-3 asp.net-mvc-4 deployment iis-6

我正在尝试bin部署一个MVC4应用程序并遇到一个让我非常困惑的问题。

我在IIS6中有一个网站条目,目前正在运行MVC3应用程序。我正在尝试部署的新应用程序被设置为它下面的虚拟目录。

当您浏览应用程序时,它会抛出此错误:

  

无法加载文件或程序集'System.Web.Helpers,版本= 1.0.0.0 ,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

新应用程序中的bin文件夹包含以下文件:

  

System.Web.Helpers.dll 版本2.0.20710.0

该错误似乎表明应用程序正在尝试加载程序集的1.0版本,并获取版本2.0文件,导致它与清单不匹配一起抛出。

我不明白为什么它会尝试首先加载版本1.0文件。我可能错了。

有没有人见过这个,或者可以提出解决方法的建议?

1 个答案:

答案 0 :(得分:0)

添加这些绑定重定向可以解决问题。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
</runtime>