无法加载文件或程序集System.Web.Http,Version = 5.2.2.0

时间:2014-12-02 13:23:37

标签: asp.net asp.net-web-api web-config assembly-binding-redirect assemblybinding

我刚刚将Asp.Net Web Api 2.2项目上传到生产服务器,我收到了标题中的错误。

在我的Web.config中,我已经有了这个:

 <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>

文件确实存在于bin中。是什么导致这种情况?
我的所有Asp.Net Web API文件都是最新的,并显示5.2.2作为版本。它在我的开发机器上工作正常。

8 个答案:

答案 0 :(得分:28)

Copy Localtrue程序集的属性中将System.Web.Http设置为System.Web.Http.WebHost,然后重新部署该程序包。

如果这不能解决您的问题,请尝试重新安装NuGet包。这有望纠正破坏的依赖关系。从程序包管理控制台,运行以下命令:

Update-Package Microsoft.AspNet.WebApi -reinstall

确保同时安装System.Web.Http.WebHost

答案 1 :(得分:7)

对我来说,来自&#34; Solution Explorer&#34;我检查了&#34; System.Web.Http&#34;在项目引用中,这是5.2.3.0所以,在web.config中,我改变了:

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" />

然后建立。它对我有用!

答案 2 :(得分:2)

在web.cofig中添加以下配置解决了我的问题。

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.5.0" />
  </dependentAssembly>

答案 3 :(得分:0)

如果您在GAC中有一个具有不同版本的程序集,它将始终加载,而不是bin文件夹中的那个。

答案 4 :(得分:0)

我遇到了同样的错误。它是由我用来部署应用程序的脚本引起的,该脚本用以前的版本替换了Web.config。 Web.config指定了错误的System.Web.Http版本。删除该步骤解决了问题。

答案 5 :(得分:0)

我通过以下步骤解决了这个问题:

  1. 将站点停止到远程Web服务器
  2. 清理站点文件夹
  3. 再次发布
  4. 启动网站

一键发布无法替换正确版本的dll,或者远程站点一直在使用该文件。

答案 6 :(得分:0)

  • 确保在其中引用了正确版本的System.web.http 您的项目(检查web.config)。
  • 如果System.web.http没有出现在引用中,请尝试安装 使用nugets。
  • 如果以上两点在您的本地均正确,则尝试从以下位置恢复您的nuget 程序包管理器控制台

答案 7 :(得分:-4)

另一种方法,不需要新建或更新/重新安装Nuget是在config.web中执行以下操作:

对于您遇到问题的DLL,请执行以下操作:

&lt;bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0"&gt;

我今天遇到了一个问题,这个小小的调整解决了它......