Ich habe einen sehr einfachen Dienst, der eine URL aufruft und einen Status erfasst, der von diesem Dienst ausgegeben wird.Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler ist aufgetreten
// Service call used to determine availability
System.Net.WebClient client = new System.Net.WebClient();
// I need this one (sorry, cannot disclose the actual URL)
Console.WriteLine(client.DownloadString(myServiceURL + ";ping"));
// I added this for test purposes
Console.WriteLine(client.DownloadString("https://www.google.com"));
Die „DownloadString“ für myServiceURL Linie führt den Fehler „Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler ist aufgetreten“ und es gibt nichts in Fiddler für diese Linie zeigt, während die „DownloadString“ für google.com arbeitet und Ich sehe die Konsolenausgabe dafür.
Nach anderen Vorschlägen für den Fehler, habe ich Kombinationen der Einstellung UseDefaultCredentials, Encoding-Optionen, Hinzufügen von geeigneten Headern auf die Anfrage, von denen keiner einen Unterschied machen.
client.UseDefaultCredentials = true;
client.Encoding = Encoding.UTF8;
Als ich zum myServiceURL in einem Browser navigieren, es funktioniert und zeigt "OK", wie erwartet.
Ein weiteres Verfahren aus dem gleichen Dienst codiert worden ist, wie folgt:
// Request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(myServiceURL + ";login");
// Set the request configuration options
req.Method = "POST";
req.ContentType = "text/xml";
req.ContentLength = bytes.Length;
req.Timeout = -1;
// Call for the request stream
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
// ....snip
// This line fails with the same error as before
WebResponse resp = req.GetResponse()
Dies alles wird auf einem Windows 7 (64-Bit) ausgeführt wird unter Verwendung von PC NET Framework 4.0; Der Dienst bei myServiceURL ist ein Dienst von Drittanbietern, auf den ich keinen Einfluss habe.
haben Sie versucht req.Proxy = WebProxy.GetDefaultProxy(); –
Haben Sie gerade versucht GetDefaultProxy (was ist veraltet?) Und es machte keinen Unterschied. – Sean
ooh Entschuldigung, rate eher als contentype du kannst diese req als HttpWebRequest.Accept = "text/xml"; –