c# - 奇怪的异常场景 System.Net.Http MediaTypeHeaderValue 无法转换为 MediaTypeHeaderValue

标签 c# asp.net .net asp.net-mvc-4 nuget

我刚开始收到这个奇怪的异常,我完全不确定如何继续前进并解决它。

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

我已经在托管 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.Formatting 是:

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

网站 System.Net.Http.Formatting 是:

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

我确实发现它涉及 NuGet 将下载 alpha 包作为依赖项,即使在下拉菜单中选择了“Stable Only”也是如此。

最佳答案

事实证明,某些 NuGet 更新出现了严重错误,它在客户端的我的 web.config 文件中创建了恶意绑定(bind)重定向。

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

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

关于c# - 奇怪的异常场景 System.Net.Http MediaTypeHeaderValue 无法转换为 MediaTypeHeaderValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16967134/

相关文章:

c# - Azure Functions Dropbox 多用户授权

C# 在使用代理之前测试代理是否正常工作

c# 时区问题

c# - 监控传出互联网流量

c# - PageAsyncTask 时间与顺序进程相同吗?

asp.net - 我应该在 ASP.NET 中生成 HTML

c# - 如何从数据列中获取数据

c# - 如何从内容页面访问母版页中的用户控件?

c# - .Net 中的大容量、高速文本框

c# - 按数字对字符串列表进行排序(1,2,...,9,10 而不是 1,10,2)