Bagikan melalui


Streaming respons HTTP diaktifkan secara default di klien HTTP browser

Klien HTTP browser sekarang mengaktifkan respons HTTP streaming secara default. Akibatnya, metode HttpContent.ReadAsStreamAsync sekarang mengembalikan BrowserHttpReadStream alih-alih MemoryStream, yang tidak mendukung operasi sinkron. Ini mungkin memerlukan pembaruan pada kode yang ada yang bergantung pada operasi aliran sinkron.

Versi yang diperkenalkan

.NET 10

Perilaku sebelumnya

Sebelumnya, di lingkungan browser seperti WebAssembly (WASM) dan Blazor, klien HTTP menyangga seluruh respons secara default. Objek HttpContent berisi MemoryStream kecuali Anda secara eksplisit memilih opsi WebAssemblyEnableStreamingResponse untuk streaming respons.

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

Perilaku baru

Mulai dari .NET 10, respons HTTP streaming diaktifkan secara default. HttpContent tidak lagi berisi MemoryStream. Sebaliknya, HttpContent.ReadAsStreamAsync mengembalikan BrowserHttpReadStream, yang tidak mendukung operasi sinkron.

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

Jenis perubahan yang memutus kompatibilitas

Ini adalah perubahan perilaku .

Alasan perubahan

Perubahan ini mendukung kasus penggunaan terkait dengan streaming GetFromJsonAsAsyncEnumerable.

Jika aplikasi Anda bergantung pada operasi aliran sinkron, perbarui kode untuk menggunakan alternatif asinkron. Untuk menonaktifkan streaming secara global atau untuk permintaan tertentu, gunakan opsi konfigurasi yang disediakan.

Untuk menonaktifkan streaming untuk permintaan individual, gunakan hal berikut:

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

Untuk menonaktifkan streaming secara global, atur variabel DOTNET_WASM_ENABLE_STREAMING_RESPONSE lingkungan atau tambahkan yang berikut ini ke file proyek Anda:

<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>

Nota

Pada .NET 10 Pratinjau 3 <WasmEnableStreamingResponse> , properti belum tersedia. Ini akan tersedia dalam rilis mendatang. Untuk detail selengkapnya, lihat masalah GitHub.

API yang terpengaruh