我刚刚开始抛出这个奇怪的异常,我完全不确定如何继续前进并解决它。
[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 包作为依赖项,即使在下拉菜单中选择了“仅稳定”。