无法在 IIS 上加载文件或程序集“System.Net.Http,版本 = 4.2.0.0,文化 = 中性”

Jep*_*zen 5 .net asp.net

我开始更新一些 nuget 包,并开始在构建时收到这些警告,并与 System.Net.Http 发生冲突。正如这里所建议的:

找不到 System.Net.Http 4.2.0.0 的奇怪问题

我替换了对 System.Net.Http 的所有引用以使用 nuget 版本,而不是与 Visual Studio 捆绑的版本。然后我按照随处的建议更改了所有重定向绑定(app.configs 和 web.configs),并且我在本地工作。但..

当我部署到我们的测试服务器时,我仍然收到错误

Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)

我正在使用 net 4.7.0 和 Visual Studio 2017

我搜索了我所有的配置以查找对版本 4.2.0.0 的引用,但没有找到。为什么 IIS 认为它需要这个?

我的 System.Net.Http nuget 版本是 4.3.4,但实际的 web.config 有这些行

<dependentAssembly>
   <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
   <bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3"/>
</dependentAssembly> 
Run Code Online (Sandbox Code Playgroud)

我再次可以在本地构建和运行它,但我的服务器报告错误。

更新:我尝试在我的服务器 web.config 上添加这个

 <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.1.1.3" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

这使得错误消失!但我仍然不明白为什么我需要这样做?比如为什么我的服务器认为它需要使用 4.2.0?

Jep*_*zen 2

我将解决方案更新为 .NET Framework 4.7.2,并确保服务器安装了此版本。这解决了我的问题。之后我可以删除绑定重定向。