web-dev-qa-db-fra.com

C # System.Net.WebException: La connexion sous-jacente a été fermée: une erreur inattendue s'est produite lors d'un envoi.

Je reçois cette erreur sur un seul serveur exécutant Windows Server 2003:

System.Net.WebException: La connexion sous-jacente a été fermée: une erreur inattendue s'est produite lors d'un envoi.


Voici mon code ... Des idées?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https:// URL HERE ");
//request.Headers.Add("Accept", "application/xml");
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(xml);
request.KeepAlive = false;
request.Accept = "application/xml";
request.ContentType = "application/xml; charset='UTF-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.Timeout = 10000;
request.ServicePoint.Expect100Continue = false;
12
Jon

Ce problème se produit lorsque l'ordinateur client ne peut pas envoyer de requête HTTP. L'ordinateur client ne peut pas envoyer la requête HTTP car la connexion a été fermée ou n'est pas disponible. Ce problème peut se produire lorsque l'ordinateur client envoie beaucoup de données. Pour résoudre ce problème, voir les résolutions A, D, E, F et O.

https://support.Microsoft.com/en-us/kb/915599

1
Dongming Yan

La définition de HttpWebRequest.KeepAlive sur false ne fonctionnait pas pour moi.

Depuis que j'accédais à une page HTTPS, je devais définir le protocole de sécurité du point de service sur Tls12.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Notez qu'il existe d'autres SecurityProtocolTypes: 

SecurityProtocolType.Ssl3 
SecurityProtocolType.Tls
SecurityProtocolType.Tls11

Donc, si le Tls12 ne fonctionne pas pour vous, essayez les trois options restantes.

Notez également que vous pouvez définir plusieurs protocoles. Ceci est préférable dans la plupart des cas.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
23
Bartho Bernsmann

Je recevais la même erreur, en utilisant RestSharp avec .NET 4.5. J'ai testé la même URL avec cURL et cela a bien fonctionné. Après une longue période de débogage, j'ai constaté que le paramétrage de SecurityProtocol corrigeait le problème.

Voir: "La connexion sous-jacente a été fermée: une erreur inattendue s'est produite lors d'un envoi." Avec certificat SSL

9
KevinVictor

Dans mon cas, j'ai oublié de supprimer le "s" de "https" lorsque je permutais des URL entre environnements. Je frappais Localhost avec https sur accident. La même chose se produirait si vous visitez un site http sans certificat https ou un certificat arrivé à expiration.

1
Suamere

Ce problème peut se produire dans ce cas, vous voudrez télécharger un lien qui est un lien de filtre et vous n'êtes pas autorisé à télécharger ce lien.

0
mohammad almasi

J'ai rencontré cette erreur lors du déploiement manuel d'un paquet de pépites sur un serveur Nexus en ligne de commande avec API-KEY. 

J'ai vérifié la configuration du serveur Nexus et j'ai réalisé que le domaine de la clé API de NuGet de Nexus n'était pas activé. Je l'ai activé et réessayé, tout a bien fonctionné. 

 enter image description here

Donc, vous devriez vérifier côté serveur pour confirmer que vous avez activé les domaines connexes. 

0
wasabi