Partager via


Diffusion en continu des réponses HTTP activées par défaut dans les clients HTTP du navigateur

Les clients HTTP du navigateur activent désormais la diffusion en continu des réponses HTTP par défaut. Par conséquent, la méthode HttpContent.ReadAsStreamAsync retourne maintenant une BrowserHttpReadStream au lieu de MemoryStream, qui ne prend pas en charge les opérations synchrones. Cela peut nécessiter des mises à jour du code existant qui s’appuient sur des opérations de flux synchrones.

Version introduite

.NET 10 Preview 3

Comportement précédent

Dans les environnements de navigateur tels que WebAssembly (WASM) et Blazor, le client HTTP a mis en mémoire tampon l’intégralité de la réponse par défaut. L’objet HttpContent contenait un MemoryStream, sauf si vous choisissez explicitement de diffuser en continu les réponses à l’aide de l’option WebAssemblyEnableStreamingResponse.

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

Nouveau comportement

Les réponses HTTP de streaming sont désormais activées par défaut. Le HttpContent ne contient plus de MemoryStream. Au lieu de cela, HttpContent.ReadAsStreamAsync retourne un BrowserHttpReadStream, qui ne prend pas en charge les opérations synchrones.

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

Type de changement cassant

Il s’agit d’un changement comportemental.

Raison de la modification

Cette modification prend en charge les cas d’utilisation autour de la diffusion en continu GetFromJsonAsAsyncEnumerable.

Si votre application s’appuie sur des opérations de flux synchrones, mettez à jour le code pour utiliser des alternatives asynchrones. Pour désactiver la diffusion en continu globalement ou pour des requêtes spécifiques, utilisez les options de configuration fournies.

Pour désactiver la diffusion en continu pour les demandes individuelles, utilisez les éléments suivants :

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

Pour désactiver la diffusion en continu globalement, définissez la variable DOTNET_WASM_ENABLE_STREAMING_RESPONSE d’environnement ou ajoutez ce qui suit à votre fichier projet :

<WasmEnableStreamingResponse>false</WasmEnableStreamingResponse>

Remarque

Depuis .NET 10 Preview 3, la <WasmEnableStreamingResponse> propriété n’est pas encore disponible. Elle sera disponible dans une prochaine version. Pour plus d’informations, consultez le problème GitHub.

API affectées