2009-09-06 10 views
10

以下を書くとき、私のコードはGetResponseにロックアップします。どうして?WebRequest.GetResponseがロックされますか?

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

問題ありませんが、HTTP上でこれをしようとしたとき:// localhostをいただきましたURIを? –

+0

これを診断するのに十分な情報がありません。あなたが使用しているURLに関係なく、1つのURLだけであるかどうか、一貫して起こるのか、ブラウザからURLにアクセスしようとするとどうなりますか? –

答えて

41

これは、通常、同じホストに複数のリクエストを行い、WebResponseを処理していない場合に発生します。

既定の接続管理設定では、一度に同じホストへの接続を2つしかできない(または、覚えていないかもしれませんが)。あなたが本当にこれを変更する必要がある場合は、<connectionManagement>のapp.config要素を使用する - が、通常あなただけWebResponseを処分しない大丈夫:

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

私は問題を完全に解決したJon Skeetです。もう一度私は処分をチェックすることはありませんでした。ありがとう。 –

+2

それは私にとっては役に立たなかった。私は "using"アプローチを試しましたが、使用中の応答でCloseを実行しましたが、同じ問題が発生します。 – Ted

+0

私の質問は以下の通りです:http://stackoverflow.com/questions/8377185/c2dm-frequent-timeouts-or-errors-when-sending-webservice-does-not-respond – Ted

関連する問題