无法加载文件或程序集';System.Web.Http,版本=5.2.2.0

本文关键字:Http 版本 Web System 文件 加载 程序集 | 更新日期: 2023-09-27 18:00:54

我将Odata v4包添加到我的API中,我注意到它将我的Microsoft.AspNet.WebApi包更新为5.2.3版本。但是当我尝试使用时

odata构建器在我的WebApiConfig中的配置显示错误'无法加载文件或程序集'System.Web.Http,Version=5.2.20'.

config.MapODataServiceRoute("odata", null, GetEdmModel(), new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));

我在我的项目中搜索了这个版本(5.2.2(,但每件事都是5.2.3,我也更新了所有的包来解决这个问题,但失败了。对于System.Web.Http dll,Copy to Local属性也为true
知道吗?

无法加载文件或程序集';System.Web.Http,版本=5.2.2.0

Visual studio为我解决了这个问题。版本冲突显示为警告,当我单击它时,它自动将绑定重定向添加到我的web配置中。

https://msdn.microsoft.com/en-us/library/2fc472t2.aspx

解决我问题的绑定重定向是,

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31BF3856AD364E35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
</assemblyBinding>

这不是"真正的"解决方案,而是一种变通方法:我已经更改了machine.config并用替换了<runtime />

  <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>

所以我工作,但如果你有其他网站运行。。。