HttpWebRequest -> Response Socket Error

21/04/2009 - 18:47 von Carsten | Report spam
Hallo Zusammen,

meine Applikation führt auf jeder Seite (Page_Load) einen Request durch, ob
die die Gegenseite (eine Windows 32 Applikation mit eigenem HTTP Server) noch
da ist. Jetzt habe ich das Problem, dass dieser Request wohl andere Requests
blockiert...sprich ich bekomme eine Socketexception auf einer Seite. Wenn ich
diese Überprüfung abschalte, dann laufen alle anderen Request durch. Das
spricht dafür, dass die Verbindung evt. nicht geschlossen wird.

Jetzt bin ich mir nicht ganz sicher, ob der fehler im Design meiner
Anwendung liegt oder auf der Gegenseite, daher habe ich zwei konkrete Fragen:

1. Die Funktion die den Request auf jeder Seite durchführt, befindet sich im
Master und wird von den Inhaltsseiten aufgerufen, die u.a. eigene Requests
gegen den selben Server durchführen. Kann das evt. problematisch werden?
(MaxServicePointIdleTime = 50000 habe ich gesetzt, da der Server einen Wert
von 60000 hat)

Quelltext:

try
{
Uri myUri = new
Uri(HttpContext.Current.Application["path"].ToString() + "alivetest");
HttpWebRequest request =
(HttpWebRequest)WebRequest.Create(myUri);
HttpWebResponse response =
(HttpWebResponse)request.GetResponse();
System.Net.ServicePointManager.MaxServicePointIdleTime =
50000;
request.KeepAlive = false;
if (response.ContentLength > 0)
{
Stream stream = response.GetResponseStream();
XmlDocument doc = new XmlDocument();
doc.Load(stream);
stream.Close();
response.Close();


if ((doc.SelectSingleNode("Text") != null) &&
(string.Compare(doc.SelectSingleNode("Text").InnerText,"still
alive",StringComparison.OrdinalIgnoreCase)==0))
return true;
else
return false;
}
else
return false;
}
catch (Exception ex)
{
logfile.ErrorLog("AliveTest()" + ex.ToString());
return false;
}

2. Die Antwort vom Server besteht u.a. aus HTTP1.1 200OK, Content-Length und
einer XML Struktur. Kann ein fehlender Content-Type im Antwort Header dazu
führen, dass die Verbindung nicht geschlossen wird?

LG

carsten
 

Lesen sie die antworten

#1 Christoph Schneegans
21/04/2009 - 20:18 | Warnen spam
"Carsten" schrieb:

Jetzt habe ich das Problem, dass dieser Request wohl andere
Requests blockiert...sprich ich bekomme eine Socketexception auf
einer Seite.



Wer soll da wen blockieren? Naheliegend wàre doch die Annahme, daß
gerade dein HttpWebRequest die SocketException auslöst. Fang die
Ausnahme an geeignete Stelle ab und schau dir ihre Eigenschaften an,
insbesondere die Message-Eigenschaft.

Statt HttpWebRequest kannst du auch WebClient.DownloadData() oder
direkt XmlDocument.Load("http://www.example.org/") probieren.

<http://schneegans.de/sv/> · Schema-Validator für XML

Ähnliche fragen