Kann nicht zum Lesen von Daten von der übertragungsverbindung: Eine vorhandene Verbindung wurde zwangsweise geschlossen durch remote-host in C#
Ich habe einen code wo ich bin das senden der URL-Anfrage und Empfang der Antwort und speichern Sie es als eine Zeichenfolge als
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;
}
}
Warum ist die Verbindung geschlossen durch remote-host?
Was sind die Möglichkeiten, loszuwerden, die Fehler oder zumindest den Fehler ignorieren und fortfahren mit anderen URL-Anforderungen? Ich habe versuchen Sie und fangen so entziehen sich jeglicher Fehler und weiterhin funktionieren mit stop. Durchforstete das internet für die Lösung, aber Lösungen für dieses spezielle problem ist ziemlich spezifisch. Bitte jede Hilfe ist willkommen.
Vielen Dank im Voraus.
Vielleicht erwartet der server eine andere url, vielleicht ist es erfordert einige spezielle header in der Anforderung, vielleicht ist es erfordert Authentifizierung etc......
Wie Sie dieses problem ignorieren und weiterhin Fortschritte mit anderen URLs? Ich habe bereits in try und catch.Was sollte getan werden?
Try/catch-würde hier nicht helfen viel. Finden docs oder wenn Sie einen funktionierenden code verwenden Sie Fiddler, um zu sehen, was es sendet und empfängt.
Wie Sie dieses problem ignorieren und weiterhin Fortschritte mit anderen URLs? Ich habe bereits in try und catch.Was sollte getan werden?
Try/catch-würde hier nicht helfen viel. Finden docs oder wenn Sie einen funktionierenden code verwenden Sie Fiddler, um zu sehen, was es sendet und empfängt.
InformationsquelleAutor user3188390 | 2014-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die eigentliche Ausnahme ist wahrscheinlich ein
IOException
- würden Sie brauchen, zu fangen, dass der Ausnahme-Typ sowieWebException
. Das eigentliche problem kann sein, dass Ihre URL nicht mehr aktuell ist und das system nicht mehr mit einem web-server, oder vielleicht, die Anfrage muss authentifiziert werden/braucht einen header, so wie @L. B schlägt.Außerdem sind Sie potenziell undichten alle Arten von Ressourcen. Sie sollten die Verpackung Ihrer WebResponse und Bäche in
using
Aussagen.InformationsquelleAutor tvanfosson
Ich hatte ähnliche Probleme mit der Verbindung, die zwangsweise geschlossen mit unterschiedlichen hosts. Scheint das Problem gelöst werden kann durch ändern verschiedener Eigenschaften des
WebRequest
Objekt.Folgende Befunde beschrieben wurden, in einem blog-post von briancaos: Eine bestehende Verbindung zwangsweise geschlossen durch remote-host
Die genannten Schritte in der obigen posten enthalten:
Set
WebRequest.KeepAlive
zuFalse
.Set
WebRequest.ProtocolVersion
zuHttpVersion.Version10
.Set
WebRequest.ServicePoint.ConnectionLimit
zu1
Es in der Tat Arbeit für mich, aber ich habe es noch nicht getestet auf mehreren hosts noch. Allerdings habe ich ernsthaft vorschlagen, das Lesen der post, wie es geht, in mehr detail.
Sollte der link zu bekommen ist, gebrochen, hier ist die Archive.org zwischengespeicherte version.
InformationsquelleAutor Jed Burke
Hatte das gleiche problem heute, So dass ich auch verpackt die Anfrage in einem try/catch mit WebException, in meinem Fall, zusätzlich:
Bevor die webRequest hat den trick. Auch Sie sollten die Verpackung Ihrer WebResponse und Bäche in mit Aussagen wie tvanfosson erwähnt.
Ich hoffe, das hilft.
InformationsquelleAutor Jacou Mata