Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Javasolt művelet
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.