gpt4 book ai didi

asp.net-core-3.0 - 将.NET Core 2迁移到.NET Core 3 : HttpContent does not contain a definition for "ReadAsAsync"

转载 作者:行者123 更新时间:2023-12-02 05:12:23 27 4
gpt4 key购买 nike

我正在遵循本指南 https://learn.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio迁移到 .NET Core 3。

我收到编译错误:

错误 CS1061“HttpContent”不包含“ReadAsAsync”的定义,并且找不到接受“HttpContent”类型的第一个参数的可访问扩展方法“ReadAsAsync”(您是否缺少 using 指令或程序集引用?)

该项目是一个类库,我已更新其 csproj,删除了对 Microsoft.AspNetCore.App 的包引用并添加了框架引用:

  <ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

有什么想法为什么会发生这种情况吗?

最佳答案

ReadAsAsync 是一个 .NET Standard 扩展,实际上在 ASP.NET Core 和 ASP.NET Web Api 之间共享(通过 NuGet 库)。但是,它使用 JSON.NET 进行反序列化,从 .NET Core 3.0 开始,ASP.NET Core 现在改用 System.Text.Json。因此,该库(及其包含的扩展)不包含在 .NET Core 3.0 框架中,因为这样做需要除了 System.Text.Json 之外还包含 JSON.NET 库。

虽然您可以手动添加 Microsoft.AspNet.WebApi.Client(以及 Newtonsoft.Json ),但您应该在没有它的情况下继续操作。无论如何,它不会为您节省太多,因为您可以通过以下方式完成相同的任务:

await JsonSerializer.DeserializeAsync<MyType>(await response.Content.ReadAsStreamAsync());

如果您愿意,可以将自己的扩展添加到 HttpContent 中,将其包装在 ReadAsAsync 方法中:

public static class HttpContentExtensions
{
public static async Task<T> ReadAsAsync<T>(this HttpContent content) =>
await JsonSerializer.DeserializeAsync<T>(await content.ReadAsStreamAsync());
}

关于asp.net-core-3.0 - 将.NET Core 2迁移到.NET Core 3 : HttpContent does not contain a definition for "ReadAsAsync",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com