异常场景System.Net.Http MediaTypeHeaderValue不能强制转换为MediaTypeHead

本文关键字:转换 MediaTypeHead 不能 MediaTypeHeaderValue System Net Http 异常 | 更新日期: 2023-09-27 18:17:11

我刚刚开始得到这个奇怪的异常被抛出,我完全不确定如何前进和解决它。

[A]System.Net.Http.Headers.MediaTypeHeaderValue cannot be cast to [B]System.Net.Http.Headers.MediaTypeHeaderValue.

Type A originates from 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' in the context 'Default' at location 'C:'Windows'Microsoft.Net'assembly'GAC_MSIL'System.Net.Http'v4.0_4.0.0.0__b03f5f7f11d50a3a'System.Net.Http.dll'.

Type B originates from 'System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' in the context 'Default' at location 'C:'Windows'Microsoft.Net'assembly'GAC_MSIL'System.Net.Http'v4.0_2.0.0.0__b03f5f7f11d50a3a'System.Net.Http.dll'

错误发生在我的WebAPI在客户端在这一行:

var data = responsecontent.ReadAsAsync<List<MyClass>>().Result;

我在我的网站上检查了对这个DLL的每一个引用,该网站托管API客户端和API解决方案。它们都引用了完全相同的dll:

C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5'System.Net.Http.dll

我注意到API正在使用较新版本的System.Net.Http.Formatting dll,但它只有较小的版本增量,并且它被更新为依赖于其他东西,所以我讨厌尝试"降级"并在此过程中创建另一个问题。

API System.Net.Http.Formatting is:

'Microsoft.AspNet.WebApi.Client.4.1.0-alpha-121112'lib'net40'System.Net.Http.Formatting.dll

Web Site system.net.http.format is:

'Microsoft.AspNet.WebApi.Client.4.0.30506.0'lib'net40'System.Net.Http.Formatting.dll

我确实发现NuGet将下载alpha包作为依赖项,即使在下拉菜单中选择了"Stable Only"。

异常场景System.Net.Http MediaTypeHeaderValue不能强制转换为MediaTypeHead

结果是一些NuGet更新出了很大的问题,它在我的web中创建了一个流氓绑定重定向。

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>

将此更改回以前的版本:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>