2009-09-06 18 views
10

Wenn ich das unten schreibe, stürzt mein Code bei GetResponse ab. Warum?WebRequest.GetResponse stürzt ab?

 try 
     { 
      WebRequest myWebRequest = WebRequest.Create(strURL); 
      WebResponse myWebResponse = myWebRequest.GetResponse(); 
      //more code here 
+0

kein Problem, wenn diese auf http versuchen: // localhost was die URI ? –

+0

Es gibt nicht genug Informationen, um dies zu diagnostizieren. Sperrt es für Sie, unabhängig davon, welche URL Sie verwenden, ist es nur für eine URL, passiert das konsistent? Was passiert, wenn Sie versuchen, über Ihren Browser auf die URL zuzugreifen? –

Antwort

41

Dies geschieht in der Regel, wenn Sie mehrere Anfragen an den gleichen Host und nicht entsorgt die WebResponse gemacht haben.

Die Standardeinstellungen für die Verbindungsverwaltung erlauben nur zwei (oder vielleicht vier, ich kann mich nicht erinnern) Verbindungen zu demselben Host gleichzeitig. Wenn Sie wirklich dies ändern müssen, verwenden Sie das <connectionManagement> app.config Element - aber in der Regel werden Sie keine Probleme nur Entsorgung von WebResponse:

try 
{ 
    WebRequest myWebRequest = WebRequest.Create(strURL); 
    using (WebResponse myWebResponse = myWebRequest.GetResponse()) 
    { 
     //more code here 
+1

I <3 Jon Skeet, die das Problem vollständig behoben. Auch hier hätte ich nie nachsehen müssen. Vielen Dank. –

+2

Das hat mir nicht geholfen. Ich habe den "using" -Ansatz ausprobiert, sowie einen Close auf die Antwort innerhalb des using ... aber immer noch das gleiche Problem. – Ted

+0

Meine Frage zu SO: http://stackoverflow.com/questions/8377185/c2dm-frequent-timeouts-orrors-when-sending-webservice-does-not-response – Ted