2009-09-06 12 views
10

Lors de l'écriture ci-dessous mon code se verrouille sur GetResponse. Pourquoi?WebRequest.GetResponse se bloque?

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

Pas de problème lorsque vous essayez ceci sur http: // localhost ce qui est l'URI ? –

+0

Il n'y a pas assez d'informations pour diagnostiquer cela. Est-ce que cela vous bloque quelle que soit l'URL que vous utilisez, est-ce seulement pour une URL, est-ce que cela arrive de manière cohérente, que se passe-t-il lorsque vous essayez d'accéder à l'URL depuis votre navigateur? –

Répondre

41

Cela se produit généralement si vous avez fait plusieurs demandes au même hôte, et non aliénées du WebResponse.

Les paramètres de gestion de connexion par défaut permettent uniquement 2 (ou peut-être 4, je ne me souviens pas) ouvrir les connexions au même hôte à la fois. Si vous vraiment besoin de changer cela, utilisez le <connectionManagement> élément app.config - mais vous serez généralement bien juste de disposer WebResponse:

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

I <3 Jon Skeet qui a complètement résolu le problème. Encore une fois je n'aurais jamais à vérifier pour disposer. Merci. –

+2

Cela n'a pas aidé pour moi. J'ai essayé l'approche «en utilisant», aussi bien que faire un proche sur la réponse à l'intérieur de l'utilisation ... mais obtenez toujours le même problème. – Ted

+0

Ma question sur SO: http://stackoverflow.com/questions/8377185/c2dm-frequent-timeouts-or-errors-when-sending-webservice-does-not-respond – Ted