Megosztás a következőn keresztül:


A böngésző HTTP kliensek alapértelmezetten engedélyezik a streaming HTTP válaszokat.

A böngésző HTTP-ügyfelei mostantól alapértelmezés szerint lehetővé teszik a HTTP-válaszok streamelését. Ennek következtében a HttpContent.ReadAsStreamAsync metódus most már egy BrowserHttpReadStream-t ad vissza egy MemoryStream helyett, amely nem támogatja a szinkron műveleteket. Ehhez szükség lehet olyan meglévő kód frissítésére, amely szinkron streamműveletekre támaszkodik.

Bevezetett verzió

.NET 10 Előzetes verzió 3

Előző viselkedés

Az olyan böngészőkörnyezetekben, mint a WebAssembly (WASM) és a Blazor, a HTTP-ügyfél alapértelmezés szerint pufferelte a teljes választ. Az HttpContent objektum tartalmazott egy MemoryStream, hacsak nem kifejezetten a válaszstreamelést választotta a WebAssemblyEnableStreamingResponse lehetőséggel.

var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream

Új viselkedés

A streamelt HTTP-válaszok alapértelmezés szerint engedélyezve vannak. A HttpContent már nem tartalmaz egy MemoryStream. Ehelyett a HttpContent.ReadAsStreamAsync egy BrowserHttpReadStream-et ad vissza, amely nem támogatja a szinkron műveleteket.

var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream

A kompatibilitástörő változás típusa

Ez egy viselkedésbeli változás.

A változás oka

Ez a módosítás támogatja a streamelés GetFromJsonAsAsyncEnumerablekörüli használati eseteket.

Ha az alkalmazás szinkron streamműveletekre támaszkodik, frissítse a kódot aszinkron alternatívák használatára. Ha globálisan vagy adott kérések esetén szeretné letiltani a streamelést, használja a megadott konfigurációs beállításokat.

Az egyes kérések streamelésének letiltásához használja a következőket:

request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);

Ha globálisan szeretné letiltani a streamelést, állítsa be a környezeti változót DOTNET_WASM_ENABLE_STREAMING_RESPONSE , vagy adja hozzá a következőket a projektfájlhoz:

<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>

Megjegyzés:

A .NET 10 3. előzetes verziójától a <WasmEnableStreamingResponse> tulajdonság még nem érhető el. Ez egy későbbi kiadásban lesz elérhető. További részletekért tekintse meg a GitHub-problémát.

Érintett API-k