Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klienti HTTP prohlížeče teď ve výchozím nastavení povolují streamované odpovědi HTTP. V důsledku toho HttpContent.ReadAsStreamAsync metoda nyní vrací BrowserHttpReadStream místo MemoryStream, která nepodporuje synchronní operace. To může vyžadovat aktualizace existujícího kódu, který závisí na synchronních operacích streamu.
Verze byla představena
.NET 10
Předchozí chování
Dříve v prohlížečovém prostředí, jako je WebAssembly (WASM) a Blazor, klient HTTP ve výchozím nastavení zpracovával celou odpověď do vyrovnávací paměti. Objekt HttpContent obsahoval MemoryStream , pokud jste explicitně nepovolili streamování odpovědí pomocí této WebAssemblyEnableStreamingResponse možnosti.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream
Nové chování
Od verze .NET 10 jsou streamované odpovědi HTTP ve výchozím nastavení povolené. Už HttpContent neobsahuje MemoryStream.
HttpContent.ReadAsStreamAsync Místo toho vrátí hodnotu BrowserHttpReadStream, která nepodporuje synchronní operace.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream
Typ zásadní změny
Jedná se o změnu chování.
Důvod změny
Tato změna podporuje případy použití streamování GetFromJsonAsAsyncEnumerable.
Doporučená akce
Pokud vaše aplikace spoléhá na synchronní operace streamu, aktualizujte kód tak, aby používal asynchronní alternativy. Pokud chcete streamování zakázat globálně nebo pro konkrétní požadavky, použijte poskytnuté možnosti konfigurace.
Pokud chcete zakázat streamování pro jednotlivé požadavky, použijte následující:
request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);
Pokud chcete streamování zakázat globálně, nastavte proměnnou DOTNET_WASM_ENABLE_STREAMING_RESPONSE prostředí nebo do souboru projektu přidejte následující:
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>
Poznámka:
Od .NET 10 Preview 3 není vlastnost <WasmEnableStreamingResponse> ještě k dispozici. Bude k dispozici v budoucí verzi. Další podrobnosti najdete v problému s GitHubem.