Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klienci HTTP przeglądarki domyślnie włączają przesyłanie strumieniowe odpowiedzi HTTP.
HttpContent.ReadAsStreamAsync W związku z tym metoda zwraca teraz wartość BrowserHttpReadStream zamiast MemoryStream, która nie obsługuje operacji synchronicznych. Może to wymagać aktualizacji istniejącego kodu, który opiera się na operacjach synchronicznego strumienia.
Wersja wprowadzona
.NET 10
Poprzednie zachowanie
Wcześniej w środowiskach przeglądarki, takich jak WebAssembly (WASM) i Blazor, klient HTTP buforował całą odpowiedź domyślnie. Obiekt HttpContent zawierał MemoryStream, o ile nie wybrałeś wyraźnie opcji przesyłania strumieniowego odpowiedzi z użyciem WebAssemblyEnableStreamingResponse.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream
Nowe zachowanie
Począwszy od platformy .NET 10, przesyłanie strumieniowe odpowiedzi HTTP jest domyślnie włączone. Obiekt HttpContent nie zawiera już parametru MemoryStream.
HttpContent.ReadAsStreamAsync Zamiast tego zwraca wartość BrowserHttpReadStream, która nie obsługuje operacji synchronicznych.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream
Typ zmiany przełamującej
Jest to zmiana zachowania.
Przyczyna zmiany
Ta zmiana obsługuje scenariusze dotyczące przesyłania strumieniowego GetFromJsonAsAsyncEnumerable.
Zalecana akcja
Jeśli aplikacja korzysta z synchronicznych operacji strumienia, zaktualizuj kod, aby używał asynchronicznych alternatyw. Aby wyłączyć przesyłanie strumieniowe globalnie lub dla określonych żądań, użyj podanych opcji konfiguracji.
Aby wyłączyć przesyłanie strumieniowe dla poszczególnych żądań, użyj następujących elementów:
request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);
Aby wyłączyć przesyłanie strumieniowe globalnie, ustaw zmienną środowiskową DOTNET_WASM_ENABLE_STREAMING_RESPONSE lub dodaj następujące elementy do pliku projektu:
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>
Uwaga / Notatka
Od wersji .NET 10 Preview 3 właściwość <WasmEnableStreamingResponse> nie jest jeszcze dostępna. Będzie ona dostępna w przyszłej wersji. Aby uzyskać więcej informacji, zobacz zgłoszenie GitHub.