HttpClient和ReadAsAsync <t>()扩展方法</t>

时间:2013-08-28 18:24:41

标签: c# .net dotnet-httpclient

所以我正在启动一个新的.Net 4.0项目,并将使用公共API进行一些工作。我打算使用Microsoft HttpClient类,所以我安装了最新的稳定版Microsoft.Net.Http NuGet包(版本2.2.13)。我正在查看同事放在一起的一些POC代码,也使用HttpClient的NuGet包,并注意到这样的代码:

HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAync("/uri").Result;

DomainType result = response.Content.ReadAsAsync<DomainType>().Result;

在我的项目中,在添加对Microsoft.Net.Http包的引用之后,当我尝试编写类似的代码时,我注意到HttpResponseMessage没有ReadAsAsync<T>()方法。在我的同事的POC解决方案中进行了一些挖掘之后,看起来ReadAsAsync<T>()实际上是System.Net.Http.Formatting程序集中的扩展方法。在这个POC解决方案中,有一个对System.Net.Http.Formatting的引用,但它从路径C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll中提取此文件。

我的问题是,访问此扩展方法是否有比从本地ASP.Net安装引用此程序集更好的解决方案?我担心这会导致我们的CI服务器出现问题,因为它不太可能安装ASP.Net。我想我可以将System.Net.Http.Formatting复制到我的解决方案中的Lib目录中,但我希望有一个更好的选项,比如我错过的另一个NuGet包会给我这个程序集。

谢谢!

1 个答案:

答案 0 :(得分:33)

这是WebAPI客户端库包的一部分。安装Microsoft.AspNet.WebApi.Client nuget包。