C# 奇数异常场景System.Net.Http MediaTypeHeaderValue无法强制转换为MediaTypeHeaderValue

C# 奇数异常场景System.Net.Http MediaTypeHeaderValue无法强制转换为MediaTypeHeaderValue,c#,asp.net,.net,asp.net-mvc-4,nuget,C#,Asp.net,.net,Asp.net Mvc 4,Nuget,我刚刚开始抛出这个奇怪的异常,我完全不确定如何继续并解决它 [A]System.Net.Http.Headers.MediaTypeHeaderValue不能强制转换为[B]System.Net.Http.Headers.MediaTypeHeaderValue。 类型A源于“System.Net.Http,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”上下文中的“Default”,位置为“C:\Windows\M

我刚刚开始抛出这个奇怪的异常,我完全不确定如何继续并解决它

[A]System.Net.Http.Headers.MediaTypeHeaderValue不能强制转换为[B]System.Net.Http.Headers.MediaTypeHeaderValue。

类型A源于“System.Net.Http,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”上下文中的“Default”,位置为“C:\Windows\Microsoft.Net\assembly\GAC\U MSIL\System.Net.Http\v4.0.0\UUUU b03f5f7f11d50a3a\System.Net.Http.dll”。

类型B源于“System.Net.Http,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”上下文中的“Default”,位置为“C:\Windows\Microsoft.Net\assembly\GAC\U MSIL\System.Net.Http\v4.0\U 2.0.0.0\UUU b03f5f7f11d50a3a\System.Net.Http.dll”

错误发生在客户端的my WebAPI中的以下行:

var data=responsecontent.ReadAsAsync().Result

我已经在承载API客户端的网站和API解决方案中检查了对该DLL的每个引用。它们都引用了完全相同的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.Net格式为:

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

网站System.Net.Http.com的格式为:

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


我确实发现,即使在下拉菜单中选择了“仅稳定”选项,NuGet也会将alpha软件包作为依赖项下载。

结果表明,某些NuGet更新出现了严重问题,它在客户端的web.config文件中创建了恶意绑定重定向

  <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>


修复了客户端的所有问题。

非常感谢您回来回答这个问题。我遇到了同样的问题,但在尝试解决方案时遇到了这个问题:
无法加载文件或程序集'System.Web.Http.WebHost,Version=4.0.0.0
有什么想法吗?请检查该dll的重定向。可能是它是必需的,但不存在,或者设置错误。
  <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>