Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
HTTP-klienter i webbläsaren aktiverar nu strömmande HTTP-svar som standard. Metoden HttpContent.ReadAsStreamAsync returnerar nu därför en BrowserHttpReadStream i stället för en MemoryStream, som inte stöder synkrona åtgärder. Detta kan kräva uppdateringar av befintlig kod som förlitar sig på synkrona strömåtgärder.
Version lanserad
.NET 10
Tidigare beteende
Tidigare buffrade HTTP-klienten hela svaret som standard i webbläsarmiljöer som WebAssembly (WASM) och Blazor. Objektet HttpContent innehöll en MemoryStream såvida du inte uttryckligen valde att strömma svar med hjälp av WebAssemblyEnableStreamingResponse alternativet .
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream
Nytt beteende
Från och med .NET 10 aktiveras strömmande HTTP-svar som standard. Innehåller HttpContent inte längre en MemoryStream.
HttpContent.ReadAsStreamAsync Returnerar i stället en BrowserHttpReadStream, som inte stöder synkrona åtgärder.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream
Typ av brytande ändring
Det här är en beteendeförändring.
Orsak till ändring
Den här ändringen stöder användningsfall kring strömning GetFromJsonAsAsyncEnumerable.
Rekommenderad åtgärd
Om programmet förlitar sig på synkrona strömåtgärder uppdaterar du koden så att den använder asynkrona alternativ. Om du vill inaktivera direktuppspelning globalt eller för specifika begäranden använder du de angivna konfigurationsalternativen.
Om du vill inaktivera direktuppspelning för enskilda begäranden använder du följande:
request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);
Om du vill inaktivera direktuppspelning globalt anger du miljövariabeln DOTNET_WASM_ENABLE_STREAMING_RESPONSE eller lägger till följande i projektfilen:
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>
Anmärkning
Från och med .NET 10 Preview 3 <WasmEnableStreamingResponse> är egenskapen ännu inte tillgänglig. Den kommer att vara tillgänglig i en framtida version. Mer information finns i GitHub-problemet.