将.NET Core 2迁移到.NET Core 3:HttpContent不包含“ ReadAsAsync”的定义

kpocrz:

我正在按照本指南https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio迁移到.NET Core 3。

我收到编译错误:

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

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

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

任何想法为什么会这样?

克里斯·普拉特(Chris Pratt):

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框架中,因为这样做需要除之外还包括JSON.NET库System.Text.Json

虽然您可以手动添加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());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

'System.Net.Http.HttpContent'不包含'ReadAsAsync'的定义,也没有扩展方法

如何将静态类从.NET迁移到.NET Core?

将HTML助手迁移到ASP.NET Core

尝试让ef核心迁移工作以将项目迁移到.net core 2

.NET CORE 2 EF包含

将WCF绑定从ASP.NET迁移到ASP.NET Core完整框架

将CreateRef方法迁移到.Net Core会导致404,如何使用.Net Core在OData中实现创建关系

New-PSSession无法使用.NET Core软件包将Ubuntu迁移到Windows

将Web服务迁移到.NET Core 2.0并返回json

将ASP.NET多层应用程序迁移到ASP.NET Core

如何将.NET Core 2.2 Web API迁移到.NET Core 3.0?

迁移到.Net Core 3后,JsonPatchDocument为null

将AddNLog从.NET Core 2.2迁移到3.0

将TempData null重定向到View-迁移到ASP.NET Core 3之后

从.NET Core 2.2迁移到3.1之后,ASP.NET Core自定义AuthenticationHandler中的AllowAnonymous不会被忽略。

将.net core 2.2应用程序迁移到3.1,它将无法在Azure中使用

将Asp.Net Core 2.2 App迁移到3.1时的整数序列化

使用ADFS的JWT承载身份验证将ASP.NET Framework迁移到ASP.NET Core 3.1

如何将Azure Functions v3迁移到.net Core 5.0

从.Net Core 3.1迁移到.NET 5

迁移到ASP.NET Core RC2后,集成测试失败

如何将HTTP POST .NET Framework迁移到.NET Core

从asp net 5迁移到asp net core时出错

将 net core preview xproj 迁移到 csproj 后出错

将经典 ASP 应用程序迁移到 ASP.NET Core

如何将 MVC 中的动态绑定代码从 .NET Framework 迁移到 .NET Core?

将 asp.net core 2.2 项目迁移到版本 3.1 后的分析器异常

将 ASP.NET Core 3.1 迁移到 .NET 5.0

将 .NET Core 应用从 Google App Engine 迁移到 Google Cloud Run - SQL 连接问题