2011-12-04 59 views
0

发生意外错误我米使用HttpWebRequest类异步如下代码(它只是Windows应用程序)HttpWebResponse异步基础连接已关闭:一个发送

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(); 

    } 

有时我得到错误:
的底层连接已关闭:发送时发生意外错误
是否有解决此问题的方法?
谢谢

回答

2

您正在从远程服务器读取块数据,但是在某个时间点,对远程服务器的传出请求失败。

至于为什么,请检查是否有内部异常。可能你需要使用诸如Fiddler或其他代理来确定远程服务器关闭连接的原因。

顺便说一句,有什么理由你为什么读1000字节块?它让我感到你可能会更好,只需从服务器直接流入您指定的100kb阵列。此外,还要确保缓冲区足够大,以便您的图像...

相关问题