【问题标题】:HttpClient and ReadAsAsync<T>() extension methodHttpClient 和 ReadAsAsync<T>() 扩展方法
【发布时间】:2013-08-28 18:24:40
【问题描述】:

所以我正在启动一个新的 .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&lt;T&gt;()方法。在对我同事的 POC 解决方案进行了一些挖掘之后,看起来ReadAsAsync&lt;T&gt;() 实际上是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 包,它可以给我这个程序集。

谢谢!

【问题讨论】:

  • 如果你想使用程序集,(扩展方法与否无关)你需要以一种或另一种方式引用它,并确保在构建时包含它。 C:\Program Files... 路径在部署它的服务器上不应该很重要。
  • 好的,谢谢,不过我确实了解程序集引用的工作原理。 C:\Program Files... 的问题是我们的 CI 服务器中不太可能存在该路径。因此,按照我的看法,我可以将该程序集复制到我的解决方案下的 Lib 目录中,以便添加到源代码管理中,并在构建解决方案时由 CI 检索,或者最好找到其他一些具有里面的程序集。

标签: c# .net dotnet-httpclient


【解决方案1】:

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

【讨论】:

  • 这是否适用于 .NET Core?我已经添加了这个 nuget 包。但它仍然不起作用。我错过了一些 using 语句吗?
  • 我安装了它,但没有任何改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 2013-04-08
  • 2014-06-07
相关资源
最近更新 更多