[英]Where is HttpContent.ReadAsAsync?
我在网上看到大量使用新HttpClient
对象(作为新 Web API 的一部分)的示例,应该有HttpContent.ReadAsAsync<T>
方法。 但是, MSDN没有提到这种方法,IntelliSense 也没有找到。
它去了哪里,我该如何解决?
看起来它是一个扩展方法(在 System.Net.Http.Formatting 中):
更新:
PM> 安装包 Microsoft.AspNet.WebApi.Client
根据System.Net.Http.Formatting NuGet 包页面, System.Net.Http.Formatting
包现在是旧包,可以在NuGet 此处提供的Microsoft.AspNet.WebApi.Client
包中找到。
我有同样的问题,所以我只是获取 JSON 字符串并反序列化到我的类:
HttpResponseMessage response = await client.GetAsync("Products");
//get data as Json string
string data = await response.Content.ReadAsStringAsync();
//use JavaScriptSerializer from System.Web.Script.Serialization
JavaScriptSerializer JSserializer = new JavaScriptSerializer();
//deserialize to your class
products = JSserializer.Deserialize<List<Product>>(data);
如果您已经在使用Newtonsoft.Json
并且不想安装Microsoft.AspNet.WebApi.Client
:
var myInstance = JsonConvert.DeserializeObject<MyClass>(
await response.Content.ReadAsStringAsync());
您可以编写扩展方法:
public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
只需右键单击您的项目,转到管理 NuGet 包搜索 Microsoft.AspNet.WebApi.Client 安装它,您将可以访问扩展方法。
2021 年更新:看起来该方法已在 .NET5 中删除。 或者,您可以使用System.Net.Http.Json.HttpContentJsonExtensions
ReadFromJsonAsync<>()
。 它解决了目的。
已经点击了几次并遵循了一系列建议,如果您在安装 NuGet Microsoft.AspNet.WebApi.Client 后没有发现它可用,则手动从解决方案中的包文件夹中添加一个引用到:
\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll
并且不要陷入向 System.Net.Http.Formatting.dll NuGet 添加旧引用的陷阱
尽管我遇到了同样的问题,但该线程中的答案并没有完全帮助我解决问题。 出于这个原因,我决定在这篇文章中写下我的研究结果。 要解决此问题,请按照以下步骤操作:
Tools > NuGet Package Manager > Package Manager Console
打开包管理器控制台,并将Microsoft.AspNet.WebApi.Client
包添加到解决方案。Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7
System.Net.Http.Formatting.dll
文件应该存在于如下所示的目录中。{root-solution-directory}\packages\Microsoft.AspNet.WebApi.Client.{package-version}\lib\net45\
手动添加对相关项目的引用。 右键单击解决方案中 ASP.NET 项目中的“引用”部分,单击“添加引用...”部分。 由于文件System.Net.Http.Formatting.dll
是扩展名,因此在直接搜索时不会像Microsoft.AspNet.WebApi.Client
包中的其他项一样列出它。 因此,要手动添加 DLL 文件,请单击“参考管理器”窗口底部的“浏览...”按钮。 选择第二步所示目录中的System.Net.Http.Formatting.dll
文件,并选中复选框以将 DLL 文件包含在项目中。
在项目中包含System.Net.Http
命名空间,以在项目中使用此 DLL 提供的功能; using System.Net.Http.Formatting;
声明在HttpContentExtensions
静态类中可用。
using System.Net.Http;
可选:您可以通过安装System.Net.Http.Formatting.Extension或WebApiDoodle.Net.Http.Formatting包之一并执行上述步骤来实现类似的解决方案。
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3
Install-Package WebApiDoodle.Net.Http.Formatting -Version 3.0.0-pre01
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.