.NET कोर 2 से .NET कोर 3 पर माइग्रेट करना: HttpContent में "ReadAsAsync" की परिभाषा नहीं है।


15

मैं इस गाइड https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio से निम्न .NET 3 पर माइग्रेट करने के लिए अनुसरण कर रहा हूं ।

मुझे संकलन त्रुटि हो रही है:

CS1061 त्रुटि 'HttpContent' में 'ReadAsAsync' की कोई परिभाषा नहीं है और कोई सुलभ एक्सटेंशन विधि 'ReadAsAsync' स्वीकार नहीं है जो 'HttpContent' प्रकार के पहले तर्क को पाया जा सकता है (क्या आप एक निर्देश या विधानसभा संदर्भ का उपयोग करके गायब हैं?)

यह प्रोजेक्ट एक क्लास लाइब्रेरी है, मैंने इसकी csproj को Microsoft.spNetCore.App के पैकेज संदर्भ को हटाने और इसकी बजाय एक फ्रेमवर्क संदर्भ जोड़ने के लिए अद्यतन किया है:

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

कोई अंदाजा ऐसा क्यों हो रहा है?

जवाबों:


34

ReadAsAsyncएक .NET मानक विस्तार है जो वास्तव में ASP.NET Core और ASP.NET वेब एपि (एक NuGet लाइब्रेरी के माध्यम से) के बीच साझा किया जाता है। हालाँकि, यह JSON.NET का उपयोग डीसर्बलाइज़ेशन करने के लिए करता है, और .NET कोर 3.0 के रूप में, ASP.NET कोर अब System.Text.Jsonइसके बजाय उपयोग करता है । जैसे, इस लाइब्रेरी (और इसमें जो एक्सटेंशन है) को .NET कोर 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());
}

5

ReadAsAsync .NET कोर 3.0 के रूप में .NET कोर का हिस्सा होने के रूप में पदावनत किया जाता है, हालांकि आप इसे NuGet पैकेज Microsoft.AspNet.WebApi.Client से शामिल कर सकते हैं और आप फिर से ReadAsAsync का उपयोग करने में सक्षम होंगे । .NET कोर 3.0 से .NET कोर 3.0 में वेब एप्लिकेशन को अपडेट करते समय मैंने उसी समस्या का अनुभव किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.