我使用HttpWebResponse.BeginGetResponse()方法向我的服务器发出请求。该请求将AllowReadStreamBuffering设置为 false ,以便不会缓冲数据。在“请求完成”通知中,我执行以下操作(不包括错误处理代码):
HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.EndGetResponse(result);
BinaryReader streamReader = new BinaryReader(response.GetResponseStream());
try
{
while ((readSize = streamReader.Read(buffer, 0, buffer.Length)) > 0)
{
...
}
}
catch (Exception)
{ // NEVER GET HERE!!
...
}
我的问题是在从流中读取数据时(在while循环期间)我无法检测到连接错误。行为非常奇怪:它完成了读取操作系统在缓存中的所有数据,然后返回'readSize = 0',如“流结束”的情况。 我期待streamReader.Read()抛出一个IOException异常但它没有! 我试图在某处找到 stream failed 标志,但似乎没有(Stream / BinaryReader / HttpWebResponse)。请帮忙!
我通过使用三种方案测试了这一点,并且都具有相同的行为:
谢谢! 米哈伊
答案 0 :(得分:0)
如果没有得到异常,那么一个选项是检查针对response.ContentLength读取的字节数