自从.Net Framework Web Api2项目更新到.Net Framework 4.7.1并更新对现在本机System.Net.Http
库的引用以来,我们现在在编译时(不是典型的运行时)得到以下错误。因此,装配绑定重定向无效。
两者中都存在“HttpResponseMessage”类型 'System.Net.Http,Version = 4.0.0.0,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'和'System.Net.Http, 版本= 4.2.0.0,文化=中立, PublicKeyToken = b03f5f7f11d50a3a'SkinOnline.Web C:_dev \ MapsOnline.Web \ API \ Controllers \ Utilites \ LongProcessController.cs
我不知道旧版本的来源 - 可能是项目依赖项之一。
修改 所以从
添加dll之后C:\ Program Files(x86)\ Reference 组件\微软\ Framework.NETFramework \ v4.7.1
在引用下,路径已更改为
C:\ VS2017 \的MSBuild \微软\ Microsoft.NET.Build.Extensions \ net471 \ lib中\ System.Net.Http.dll
这就是说版本是4.2.0.0
答案 0 :(得分:6)
所以实际上新的原生文件是版本4.2.0.0(不知道在这个整合是4.3.3之前,人们在这里做了什么最新版本)。
确实,我们确实需要绑定重定向。
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
没有它我会得到奇怪的运行时错误
System.MissingMethodException找不到方法: “System.Net.Http.HttpRequestMessage System.Web.Http.ApiController.get_Request()”
答案 1 :(得分:2)
您遇到的问题是,即使将新的System.Net.Http二进制文件(4.2.0.0)复制到应用程序的同一文件夹中,VS工具也不会自动生成正确的绑定重定向。我们最近通过此拉取请求修复了此问题:https://github.com/dotnet/corefx/pull/25786
一旦Visual Studio使用了该修复程序,将自动为您生成正确的绑定重定向,您将不再看到此问题。此修复程序将包含在Visual Studio 15.6 Preview 3中。目前,手动添加绑定重定向将起到作用。