2009-09-06 17 views
10

Al escribir a continuación, mi código se bloquea en GetResponse. ¿Por qué?WebRequest.GetResponse se bloquea?

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

No hay problema cuando se trata de esto en http: // localhost cuál es el URI ? –

+0

No hay suficiente información para diagnosticar esto. ¿Se bloquea para usted independientemente de la URL que use, es solo para una URL, sucede constantemente, qué sucede cuando intenta acceder a la URL desde su navegador? –

Respuesta

41

Esto suele suceder si usted ha hecho varias peticiones a la misma máquina, y no se eliminan de la WebResponse.

La configuración de gestión de conexión predeterminada solo permite 2 (o quizás 4, no recuerdo) abrir conexiones al mismo host a la vez. Si realmente necesita cambiar esto, utilice el elemento <connectionManagement> app.config - pero por lo general se le multa simplemente desechar WebResponse:

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

I <3 Jon Skeet que solucionó el problema por completo. De nuevo, nunca tendría que verificar para descartar. Gracias. –

+2

Eso no me ayudó. Intenté el enfoque de "usar", así como hacer un cierre en la respuesta dentro del uso ... pero todavía tengo el mismo problema. – Ted

+0

Mi pregunta en SO: http://stackoverflow.com/questions/8377185/c2dm-frequent-timeouts-or-errors-when-sending-webservice-does-not-respond – Ted

Cuestiones relacionadas