3

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

[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.Formattingdll,但它的唯一次要版本增量,并且它作为对其他东西的依赖而更新,所以我不愿意尝试“降级”并在此过程中创建另一个问题。

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 包作为依赖项,即使在下拉菜单中选择了“仅稳定”。

4

1 回答 1

11

事实证明,一些 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>

修复了客户端的所有内容。

于 2013-06-06T17:24:17.990 回答