2011-12-04 7 views
0

に発生した(それだけでWindowsアプリケーションです):は、基になる接続が閉じられましたHttpWebResponseの非同期:予期しないエラーが次のコードのように、私は非同期のHttpWebRequestクラスを使用してmを送信

private void StartWebRequest(string url) 
    {   
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);   
    } 

    private void FinishWebRequest(IAsyncResult result) 
    { 
      HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse; 
      Stream responseStream = response.GetResponseStream(); 
      int num = 100000; 
      byte[] buffer = new byte[num]; 
      int offset = 0; 
      while ((num2 = responseStream.Read(buffer, offset, 1000)) != 0) 
      { 
       offset += num2; 
      } 
      MemoryStream stream = new MemoryStream(buffer, 0, offset); 
      Bitmap bitmap = (Bitmap)Image.FromStream(stream); 
      bitmap.Save(@"z:\new.jpg"); 
      response.Close(); 

      responseStream.Close(); 
      stream.Close(); 

    } 

は時々私はそのエラーを取得します:

The underlying connection was closed : An unexpected error occured on a send 

この問題を解決する方法はありますか。

答えて

2

tryとcatchブロックにコードを入れて、エラーが検出された場合は、再度接続を再試行してください。トライアル数のクォータを事前に定義することができます(たとえば、最大3回試行するなど)。ネットワーク環境は予測不可能なので、信頼性を維持する必要があります。最後の試行の後、ストリームと接続を閉じることを忘れないでください

関連する問題