.NET Core 2'yi .NET Core 3'e taşıma: HttpContent “ReadAsAsync” için bir tanım içermiyor


15

.NET Core 3'e geçmek için https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio bu kılavuzu izliyorum.

Derleme hatası alıyorum:

Hata CS1061 'HttpContent', 'ReadAsAsync' için bir tanım içermiyor ve 'HttpContent' türünde bir ilk bağımsız değişkeni kabul eden erişilebilir bir genişletme yöntemi 'ReadAsAsync' bulunamadı (yönerge veya montaj başvurusu kullanmıyor musunuz?)

Proje bir sınıf kütüphanesi, csproj Microsoft.AspNetCore.App için bir paket başvurusu kaldırma ve bunun yerine bir çerçeve başvurusu ekleyerek güncelledik:

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

Bunun neden olduğu hakkında bir fikrin var mı?

Yanıtlar:


34

ReadAsAsyncASP.NET Core ve ASP.NET Web Api (NuGet kütüphanesi aracılığıyla) arasında paylaşılan bir .NET Standard uzantısıdır. Ancak, serileştirmeyi yapmak için JSON.NET kullanır ve .NET Core 3.0'dan itibaren ASP.NET Core artık kullanır System.Text.Json. Bu nedenle, bu kitaplık (ve içerdiği uzantı) .NET Core 3.0 çerçevesine dahil değildir, çünkü bunu yapmak için ek olarak JSON.NET kitaplığı da gerekir System.Text.Json.

Manuel olarak Microsoft.AspNet.WebApi.Client(ve Newtonsoft.Jsononunla birlikte) ekleyebilirsiniz, ancak onsuz devam etmelisiniz. Sadece aynı şekilde yapabileceğiniz için sizi zaten kurtarmaz:

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

İsterseniz, bunu HttpContentbir ReadAsAsyncyöntemle tamamlamak için kendi uzantınızı ekleyebilirsiniz :

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

5

ReadAsAsync , .NET Core 3.0'dan itibaren .NET Core'un bir parçası olarak kullanımdan kaldırılmıştır, ancak Microsoft.AspNet.WebApi.Client NuGet paketinden olduğu gibi ReadAsAsync'i tekrar kullanabilirsiniz . Web uygulamasını .NET Core 2.0'dan .NET Core 3.0'a güncellerken aynı sorunu yaşadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.