2009-09-06 16 views
10

Durante la scrittura di seguito il mio codice si blocca su GetResponse. Perché?WebRequest.GetResponse si blocca?

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

Nessun problema quando si cerca questo su http: // localhost che cosa è l'URI ? –

+0

Non ci sono abbastanza informazioni per diagnosticare questo. Si blocca per te indipendentemente dall'URL che usi, è solo per un URL, avviene in modo coerente, cosa succede quando provi ad accedere all'URL dal tuo browser? –

risposta

41

Questo di solito accade se hai fatto diverse richieste allo stesso host, e non smaltiti del WebResponse.

Le impostazioni di gestione della connessione predefinite consentono solo 2 (o forse 4, non ricordo) di aprire connessioni allo stesso host alla volta. Se davvero bisogno di cambiare questo, utilizzare l'elemento <connectionManagement> app.config - ma di solito non avrete problemi solo lo smaltimento dei WebResponse:

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

I <3 Jon Skeet che ha risolto completamente il problema. Anche in questo caso non avrei mai dovuto controllare per lo smaltimento. Grazie. –

+2

Questo non mi ha aiutato. Ho provato l'approccio "using", oltre a eseguire una chiusura sulla risposta all'interno dell'utilizzo ... ma ho ancora lo stesso problema. – Ted

+0

La mia domanda su SO: http://stackoverflow.com/questions/8377185/c2dm-frequent-timeouts-or-errors-when-sending-webservice-does-not-respond – Ted