Remarque
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.
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez la HttpWebRequest classe pour envoyer un grand nombre de données pour une requête HTTP POST ou PUT.
Version du produit d’origine : .NET Framework 4.5
Numéro de la base de connaissances d’origine : 2855735
Symptômes
Lorsque vous utilisez la HttpWebRequest classe pour envoyer un grand nombre de données pour une requête HTTP POST ou PUT, la requête peut échouer sur un ordinateur exécutant Microsoft .NET Framework. En outre, vous pouvez recevoir une exception hors mémoire.
Vous remarquerez peut-être que l’application qui utilise la HttpWebRequest classe consomme beaucoup de souvenirs. Lorsque vous utilisez Analyseur de performances pour surveiller l’application qui utilise la HttpWebRequest classe, le nombre d’octets privés continue d’augmenter à mesure que les données sont envoyées.
La cause
Ce problème se produit car .NET Framework met en mémoire tampon les données sortantes par défaut lorsque vous utilisez la HttpWebRequest classe.
Une requête POST ou PUT échoue lorsque vous utilisez la classe HttpWebRequest pour envoyer un grand nombre de documents de données au problème d’origine.
Résolution
Pour contourner ce problème, définissez la HttpWebRequest.AllowWriteStreamBuffering propriété sur false. En procédant ainsi, les données sortantes (corps d’entité) pour la requête POST ou PUT ne seront pas mises en mémoire tampon.
Dans les versions de .NET Framework antérieures à la version 4.5, la définition HttpWebRequest.AllowWriteStreamBuffering de la propriété sur false entraînerait parfois des erreurs lors du chargement de données vers des points de terminaison authentifiés. Par exemple, vous pouvez rencontrer un System.Net.WebException message indiquant que cette requête nécessite la mise en mémoire tampon des données pour réussir. Toutefois, lors d’un examen plus approfondi de la réponse associée à l’exception, indique en fait un code d’état de System.Net.HttpStatusCode.Unauthorized (401).
Une requête POST ou PUT échoue lorsque vous utilisez la classe HttpWebRequest pour envoyer un grand nombre de documents de données une solution de contournement de la connexion pré-authentification et KeepAlive pour gérer la réponse 401.
Contrairement à .NET Framework 1.1, 2.0, 3.0, 3.5 et 4.0, .NET Framework 4.5 ajoute de nouvelles fonctionnalités de conception pour la HttpWebRequest.AllowWriteStreamBuffering propriété. La nouvelle fonctionnalité peut gérer le scénario d’authentification directement tant que la Expect100Continue fonctionnalité est activée. La valeur par défaut ServicePointManager.Expect100Continue est true.