Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los clientes HTTP del explorador ahora habilitan las respuestas HTTP de streaming de forma predeterminada. Por lo tanto, el HttpContent.ReadAsStreamAsync método ahora devuelve un BrowserHttpReadStream
en lugar de , MemoryStreamque no admite operaciones sincrónicas. Esto puede requerir actualizaciones en el código existente que se basa en operaciones de flujo sincrónicas.
Versión introducida
.NET 10 Preview 3
Comportamiento anterior
En entornos de explorador como WebAssembly (WASM) y Blazor, el cliente HTTP almacenaba en búfer toda la respuesta de forma predeterminada. El objeto HttpContent contenía un MemoryStream a menos que optara explícitamente por transmitir respuestas con la opción WebAssemblyEnableStreamingResponse
.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream
Nuevo comportamiento
Las respuestas HTTP de streaming ahora están habilitadas de forma predeterminada. El HttpContent objeto ya no contiene un MemoryStream. En su lugar, HttpContent.ReadAsStreamAsync devuelve un BrowserHttpReadStream
, que no admite operaciones sincrónicas.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream
Tipo de cambio disruptivo
Se trata de un cambio de comportamiento .
Motivo del cambio
Este cambio admite casos de uso relacionados con el streaming GetFromJsonAsAsyncEnumerable.
Acción recomendada
Si la aplicación se basa en operaciones de flujo sincrónicas, actualice el código para usar alternativas asincrónicas. Para deshabilitar el streaming global o para solicitudes específicas, use las opciones de configuración proporcionadas.
Para deshabilitar el streaming para solicitudes individuales, use lo siguiente:
request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);
Para deshabilitar el streaming globalmente, establezca la variable DOTNET_WASM_ENABLE_STREAMING_RESPONSE
de entorno o agregue lo siguiente al archivo del proyecto:
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>
Nota:
A partir de .NET 10 Preview 3, la <WasmEnableStreamingResponse>
propiedad aún no está disponible. Estará disponible en una versión futura. Para obtener más información, consulte el problema de GitHub.