底层连接关闭:发送时发生意外错误
本文关键字:意外 错误 连接 | 更新日期: 2023-09-27 18:16:49
我使用HttpWebRequest类异步如下代码(它只是windows应用程序)
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();
}
有时会出现这个错误:
底层连接已关闭:发送时发生意外错误
有办法解决这个问题吗?
谢谢
您正在从远程服务器读取数据块,但是在某个时刻,向远程服务器发出的请求失败。
至于为什么,检查是否有内部异常。您可能需要使用诸如Fiddler或其他代理之类的东西来确定远程服务器关闭连接的原因。顺便说一下,你为什么要读取1000字节块?我突然想到,最好直接从服务器流式传输到您指定的100kb数组中。同时,要确保缓冲区足够大,可以容纳图片