16 Stimmen

System.Net.WebException: Die zugrunde liegende Verbindung wurde geschlossen: Die Verbindung wurde unerwartet geschlossen

Ich schreibe eine .NET-Anwendung, die Daten an eine andere .NET-Anwendung weiterleiten soll. Ich verwende den folgenden Code, um die Anmeldeseite anzufordern

WebProxy proxy = new WebProxy("http://proxy:80/", true);
HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
//proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
// webRequest.Proxy = proxy;
webRequest.Proxy = WebRequest.DefaultWebProxy;

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();

aber es scheitert an dieser Zeile

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());

mit der Fehlermeldung :

System.Net.WebException: The underlying connection was closed: The connection was 
                         closed unexpectedly.

0 Stimmen

Das Problem scheint darin zu bestehen, dass der Server die Verbindung schließt - möglicherweise stirbt er. Überprüfen Sie den Server (Protokolle, eventwvr, etc.) und fügen Sie Server-Code. Es kann auch sein, dass Sie sich nicht mit der richtigen Box verbinden (Ihre Proxy-Einstellungen, etc.). Wie lautet der http-Status, den Sie zurückbekommen (er steht in der Antwort auf die Ausnahme, wenn ich mich richtig erinnere)?

2 Stimmen

Um das Problem aufzuspüren, schlage ich vor, dass Sie den Aufruf in einen Code zum Abfangen von Ausnahmen verpacken und den vollständigen Stack-Trace ausdrucken.

1 Stimmen

Diese Ausnahme ist besonders schwer aufzuspüren. Bitte geben Sie so viele Informationen wie möglich, wenn Sie vernünftige Antworten erhalten möchten

9voto

Ivan Ičin Punkte 9021

In meinem Fall wurde das Problem dadurch gelöst:

System.Net.ServicePointManager.Expect100Continue = false;

und keine der oben genannten.

7voto

Wenn Sie .NET 2.0 oder höher verwenden, können Sie die Netzwerkverfolgung aktivieren und sehen, was tatsächlich über die Leitung passiert. Auf diese Weise können Sie mehr Informationen über diese spezielle Ausnahme erhalten.

Weitere Einzelheiten finden Sie unter folgendem Link, http://msdn.microsoft.com/en-us/library/hyb3xww8%28VS.80%29.aspx

4voto

Rik Punkte 27644

Ich bin vor einiger Zeit auf dieselbe Ausnahme gestoßen, und ich erinnere mich, dass dies passiert in einigen Fällen aufgrund eines Fehlers in .NET. Sie können dies umgehen, indem Sie Timeout und ReadWriteTimeout der Anforderung auf höhere Werte setzen oder KeepAlive auf false setzen.

Dies wäre jedoch nur eine Abhilfe, daher schlage ich vor, dass Sie versuchen, die tatsächliche Ursache zu finden, bevor Sie etwas annehmen.

Ich werde versuchen, ein paar Web-Referenzen zu finden, in der Zwischenzeit können Sie unter Hochladen großer Dateien (WebException: Die Verbindung wurde unerwartet geschlossen)

3voto

Das scheint ein mögliches Problem zu sein:

  1. Sie weisen den Proxy, den Sie erstellen, niemals Ihrem HttpWebRequest zu

    WebProxy **proxy** = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    //proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
    // webRequest.Proxy = proxy;
    webRequest.Proxy = **WebRequest.DefaultWebProxy**;

    Sie sollten es so zuordnen:

    WebProxy proxy = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    webRequest.Proxy = proxy;

    (Beachten Sie den Unterschied in der letzten Zeile).

  2. Sie verwenden Port 80 auf Ihrem Proxy. Ist das wirklich richtig? Viele Proxys verwenden Port 8080.

2voto

Dan Gifford Punkte 849

Ich hatte dieses Problem einmal. Mein Virenschutz war der Übeltäter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X