Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Action recommandée
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.