2009-09-02 2 views
-1

Ich habe eine Anwendung, die eine Sync-Anfrage auf einer externen Ressource über http (s) macht. Alle paar Wochen bekomme ich die folgende AusnahmeSystem.Net.Sockets.SocketException

Exception: System.Net.WebException - Message: Unable to connect to the remote server 

Innere Ausnahme: System.Net.Sockets.SocketException - Nachricht: Ein Verbindungsversuch ist fehlgeschlagen, da die verbundene Partei nicht richtig nach einer Zeitspanne reagiert hat, oder die hergestellte Verbindung fehlgeschlagen Weil der verbundene Host nicht antwortet

Was mich stört ist, dass meine Trace-Protokolle zeigen, dass für jede einzelne Instanz dieser Ausnahme "21 Sekunden" in die Anfrage geworfen wurde.

Hat jemand dieses Verhalten schon einmal gesehen und gibt es eine Lösung? Gibt es bekannte Probleme im Namespace System.Net.HttpWebRequest? Was sind die besten Verfahren für die Verwendung von System.Net.HttpWebRequest z. sollte ich explizit Antwort-Streams schließen und entsorgen ...

Antwort

0

Wenn Sie auf externe Ressourcen zugreifen, ist die Antwort höchstwahrscheinlich, dass diese Ressourcen nicht verfügbar waren (ihre Server waren inaktiv, Ihre Verbindung war inaktiv, ihre Verbindung war) runter, usw.).

Sie können die .Timeout Eigenschaft vor dem GetResponse() -Methode des Objekts HttpWebRequest die Zeit ein, bevor es offiziell mal und sehen, zu verlängern, was passiert:

myHttpWebRequest.Timeout = 10; //In milliseconds 

Geschieht dies nicht, könnten Sie versuchen, dieses Hinzufügen wenn Sie Ihr Lauf ASP.NET mit NETWORK SERVICE als Host-Konto auf Ihre Konfigurationsdatei:

<configuration > 
    <system.net> 
    <defaultProxy> 
     <proxy bypassonlocal="true" usesystemdefault="false" /> 
    </defaultProxy> 
</system.net> 
</configuration> 

wenn Sie dies nicht tun, kann Ihre Anwendung nicht auf die Proxy-Einstellungen erhalten. .NET sucht danach, kann es nicht finden und verbindet sich dann standardmäßig. Dies wird die Ausnahme verursachen, aber die Ausführung wird fortgesetzt. Es kann erklären, warum es immer 21 Sekunden in einer Anfrage ist.

Read the full details here.

+0

Es ist kein Zeitlimit. Das Standard-Timeout beträgt 100 Sekunden. Meine Anfrage erreicht den entfernten Server in Bearbeitung und alles funktioniert wie erwartet, aber ich bekomme die oben genannten Ausnahmen? –

+0

Aktualisiert meine Antwort, hoffe es hilft. –

Verwandte Themen