2009-03-02 7 views
1

Ich habe eine Webanwendung, die einen Webdienst auf einem anderen Server abfragt. Der Server befindet sich im selben Netzwerk und wird über eine interne IP-Adresse an Port 8080 referenziert.HttpWebRequest nicht zurück, Verbindung wird geschlossen

Alle 15 Sekunden wird eine Anforderung gesendet, die eine XML-Antwort mit Auftragsinformationen empfängt. In 95% der Fälle funktioniert das gut, aber zu zufälligen Zeiten ist die Anfrage an den Server null und meldet eine "Antwort gewaltsam vom Remote-Host geschlossen".

Bei der Untersuchung dieses Problems haben andere KeepAlive = false festgelegt. Dies hat das Problem nicht gelöst. Auf dem Webserver wird .NET 3.5 SP1 ausgeführt.

Uri serverPath = new Uri(_Url); 

// create the request and set the login credentials 
_Req = (HttpWebRequest)WebRequest.Create(serverPath); 
_Req.KeepAlive = false; 
_Req.Credentials = new NetworkCredential(username, password); 
_Req.Method = this._Method; 

Aufruf an die Antwort:

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
_ResponseStream = response.GetResponseStream(); 

Das Verfahren hierfür ist GET. Ich habe versucht, das Timeout zu ändern, aber der Standardwert ist groß genug, um dies zu berücksichtigen.

Die andere Anfrage, die wir ausführen, ist ein POST, um Daten an den Server zu senden, und wir bekommen das gleiche Problem zufällig. Es gibt keine Firewalls, die dies beeinträchtigen, und wir haben den Virenscanner ausgeschlossen. Irgendwelche Ideen, die helfen, dieses zu lösen, werden sehr geschätzt!

+0

Wie hoch ist die Häufigkeit der Verbindungsabbrüche? Alles Interessante im Serverprotokoll? – jdigital

+0

Sind Sie sicher, dass der Server nicht wirklich Verbindungen zu Ihnen schließt? Es ist durchaus möglich, dass es sich um einen Fehler auf dem Server und nicht auf Ihrem Client handelt. –

Antwort

5

Schließen Sie den Antwortstream und entfernen Sie die Antwort selbst? Das ist die häufigste Ursache für das "Hängenbleiben" mit WebRequest. Es gibt eine Grenze für die Anzahl der Verbindungen, die Sie gleichzeitig auf demselben Computer öffnen können. Der GC wird die Verbindungen schließlich abschließen, aber wenn Sie sie ordnungsgemäß entsorgen, ist das kein Problem.

0

Ich würde Netzwerkprobleme nicht als möglichen Grund für Probleme ausschließen. Haben Sie einen Ping-Befehl an Ihren Server gesendet, um zu sehen, ob Pakete verworfen werden, die den gleichen Zeiten entsprechen wie Ihre fehlgeschlagenen Anfragen?

0

Setzen Sie die Timeout-Eigenschaft von FtpWebRequest Objekt auf Maximum ich habe es mit 4 GB-Datei versucht und es funktioniert gut.

Verwandte Themen