【发布时间】:2021-09-29 14:56:36
【问题描述】:
以下指的是一个.NET Core应用,依赖如下...
Microsoft.NETCore.App
Microsoft.AspNet.WepApi.Client (5.2.7)
在 Microsoft.com 上是 2017 年 11 月的文档 Call a Web API From a .NET Client (C#)。
在文档中是 HTTP GET 的客户端调用。
static HttpClient client = new HttpClient();
static async Task<Product> GetProductAsync(string path)
{
Product product = null;
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
product = await response.Content.ReadAsAsync<Product>();
}
return product;
}
值response.Content 指的是HttpContent 对象。截至 2020 年 7 月,HttpContent 没有签名为ReadAsAsync<T>() 的实例方法,至少根据以下文档。但是,此实例方法有效。
没有带有签名ReadAsAsync<T>()的实例方法的参考链接...
https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpcontent?view=netcore-3.1
有一个静态方法HttpContentExtensions.ReadAsAsync<T>(myContent),其中myContent 指的是HttpContent 对象。这种静态方法也有效。
参考链接... https://docs.microsoft.com/en-us/previous-versions/aspnet/hh834253(v=vs.118)
例如,一个记录在案的签名具有...
静态图标后跟
ReadAsAsync<T>(HttpContent)
还有一个说明它将返回Task<T>。这个静态方法很可能是实例方法的幕后实现。
但是,静态方法网页顶部的信息表明... "我们不再定期更新此内容。请查看 Microsoft 产品生命周期,了解有关如何支持此产品、服务、技术或 API 的信息。"
HttpContent.ReadAsAsync<T>() 两种形式(实例和静态)是否已在 .NET Core 3.1 中被取代?
【问题讨论】:
-
虽然文档令人困惑,并且不能保证 2017 年 11 月应该可以工作,但我决定接受它作为 .NET Core 项目的“足够好”示例。
-
这个链接可能会在 2020 年 7 月 28 日引起人们的兴趣。visualstudiomagazine.com/articles/2020/07/28/… 引用它...“但是请注意,NuGet 并不能说明整个故事,因为 System.Text.Json 库包含在 .NET Core 3.0 共享框架中,而对于其他目标框架,开发者需要安装 System.Text.Json NuGet 包。”
-
截至今天,在 .Net Core 3.1 中仍然没有替代 ReadAsAsync
...。您必须创建自己的...或继续使用 ApiClient 版本 5.2.7,这很明显依赖于 Newtonsoft JSON
标签: c# asp.net-core httpresponse