Impossible de lire les données de la connexion de transport: Une connexion existante a dû être fermée par l'hôte distant en C#
J'ai un code où je suis d'envoyer l'URL de requête et la réception de la réponse et de les stocker en tant que Chaîne de caractères comme
public String GenerateXML(String q)//Here 'q' is the URL
{
//Generating the XML file for reference
//Getting the response in XML format from the URL
Debug.WriteLine("The Http URL after URL encoding :" + q);
try
{
Uri signs1 = new Uri(q);
//Debug.WriteLine("The Requested URL for getting the XML data :" + re);
WebRequest request1 = WebRequest.Create(signs1);
HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
//HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
Stream receiveStream = response1.GetResponseStream();
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
String ab = readStream.ReadToEnd();//The mentioned error is showing up here.
//Debug.WriteLine("The data :"+a);
//XmlDocument content2 = new XmlDocument();
//content2.LoadXml(ab);
// content2.Save("C:/Users/Administrator/Downloads/direct.xml");
return ab;
}
catch (System.Net.WebException ex)
{
Debug.WriteLine("Exception caught :" + ex);
return null;
}
}
Pourquoi la connexion est fermée par l'hôte distant?
Quelles sont les possibilités de se débarrasser de l'erreur ou au moins de les ignorer l'erreur et de continuer avec d'autres demandes d'URL? J'ai inclus try et catch, afin d'éviter toute erreur et de continuer à fonctionner avec n'importe quel arrêt. Parcouru l'internet pour la solution mais des solutions à ce problème particulier est assez bien spécifiques. Merci de toute aide est appréciée.
Merci à l'avance.
Peut-être que le serveur attend une url différente, peut-être que cela nécessite un peu spécial en-tête de demande, peut-être qu'il nécessite une authentification, etc......
Comment ignorer ce problème et de continuer à progresser avec d'autres URLs? J'ai déjà mis en try et catch.Quoi d'autre faut-il faire?
Try/catch ne serait pas aider beaucoup ici. Trouver des docs ou si vous avez un code de travail utiliser un violon pour voir ce qu'il envoie et reçoit.
Comment ignorer ce problème et de continuer à progresser avec d'autres URLs? J'ai déjà mis en try et catch.Quoi d'autre faut-il faire?
Try/catch ne serait pas aider beaucoup ici. Trouver des docs ou si vous avez un code de travail utiliser un violon pour voir ce qu'il envoie et reçoit.
OriginalL'auteur user3188390 | 2014-01-30
Vous devez vous connecter pour publier un commentaire.
L'exception réelle est probablement un
IOException
- vous besoin de prendre ce type d'exception ainsi queWebException
. Le réel problème est peut-être que votre URL est plus à jour et le système n'est plus de l'exécution d'un serveur web, ou peut-être, la demande doit être authentifié/besoin d'un en-tête comme @L. B suggère.Aussi, vous êtes potentiellement fuites de toutes sortes de ressources. Vous devriez être à l'emballage de votre WebResponse et des ruisseaux dans
using
consolidés.OriginalL'auteur tvanfosson
J'ai eu des problèmes similaires avec la connexion fermée de force avec des hôtes différents. Semble que le problème peut être résolu en modifiant les propriétés de la
WebRequest
objet.Les constatations suivantes ont été décrits dans un article de blog par briancaos: Une connexion existante a dû être fermée par l'hôte distant
Les étapes mentionnées dans le post ci-dessus comprennent:
Ensemble
WebRequest.KeepAlive
àFalse
.Ensemble
WebRequest.ProtocolVersion
àHttpVersion.Version10
.Ensemble
WebRequest.ServicePoint.ConnectionLimit
à1
Il fait le travail pour moi, mais je ne l'ai pas testé sur plusieurs hôtes. Cependant, j'ai sérieusement vous suggérons de lire le post qu'il va en voie plus de détails.
Dans le cas où le lien est cassé, voici le Archive.org version mise en cache.
OriginalL'auteur Jed Burke
Eu le même problème aujourd'hui, j'ai Donc également enveloppé la demande dans un try/catch avec WebException, dans mon cas, en ajoutant:
Avant la webRequest a fait le tour. En outre, vous devriez être d'emballage de votre WebResponse et des ruisseaux dans à l'aide de états tvanfosson mentionné.
J'espère que cette aide.
OriginalL'auteur Jacou Mata