Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os clientes HTTP do navegador agora habilitam o streaming de respostas HTTP por padrão. Consequentemente, o HttpContent.ReadAsStreamAsync método agora retorna um BrowserHttpReadStream em vez de um MemoryStream, que não oferece suporte a operações síncronas. Isso pode exigir atualizações para o código existente que depende de operações de fluxo síncrono.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, em ambientes de navegador como WebAssembly (WASM) e Blazor, o cliente HTTP armazenava em buffer toda a resposta por padrão. O objeto HttpContent continha um MemoryStream a menos que você tenha optado explicitamente por transmitir respostas usando a opção WebAssemblyEnableStreamingResponse.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns MemoryStream
Novo comportamento
A partir do .NET 10, o streaming de respostas HTTP é habilitado por padrão. O HttpContent já não contém um MemoryStream. Em vez disso, HttpContent.ReadAsStreamAsync retorna um BrowserHttpReadStream, que não oferece suporte a operações síncronas.
var response = await httpClient.GetAsync("https://example.com");
var contentStream = await response.Content.ReadAsStreamAsync(); // Returns BrowserHttpReadStream
Tipo de mudança disruptiva
Esta é uma mudança comportamental.
Motivo da mudança
Esta alteração suporta casos de uso relacionados com streaming GetFromJsonAsAsyncEnumerable.
Ação recomendada
Se seu aplicativo depende de operações de fluxo síncrono, atualize o código para usar alternativas assíncronas. Para desativar o streaming globalmente ou para solicitações específicas, use as opções de configuração fornecidas.
Para desativar o streaming para solicitações individuais, use o seguinte:
request.Options.Set(new HttpRequestOptionsKey<bool>("WebAssemblyEnableStreamingResponse"), false);
// or
request.SetBrowserResponseStreamingEnabled(false);
Para desativar o streaming globalmente, defina a variável DOTNET_WASM_ENABLE_STREAMING_RESPONSE de ambiente ou adicione o seguinte ao arquivo de projeto:
<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>
Observação
A partir do .NET 10 Preview 3, a <WasmEnableStreamingResponse> propriedade ainda não está disponível. Ele estará disponível em uma versão futura. Para obter mais detalhes, consulte o problema do GitHub.