无法在IIS

时间:2019-04-08 14:53:53

标签: asp.net .net

我开始更新一些nuget程序包,并开始在构建时出现这些警告,但System.Net.Http发生冲突。如这里的建议:

Strange issue with System.Net.Http 4.2.0.0 not found

我替换了对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)

我正在使用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> 

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

更新:我尝试将其添加到我的服务器上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>

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

如果无法安装.net 4.7,请在web.onfig上删除此行

答案 2 :(得分:0)

对于下一个登陆此页面的人员,想知道为什么指定较低版本可以使其正常工作,请查看Ankush的以下答案: https://stackoverflow.com/a/57214989/10812109

还要在dotnet的github问题页面上关注此令人困惑的线程: https://github.com/dotnet/runtime/issues/24382#issuecomment-350036434