日期:2014-05-19  浏览次数:20857 次

System.Net.HttpWebRequest的Bug? 下载几万个网页後不能下载了
用这个东西多线程下载网页,   大概下载了几万个之后,就出问题了.
出问题就是每次读取完一个网页时弹出WebException, "The   underlying   connection   was   closed:   An   unexpected   error   occurred   on   a   send. "
或者异常IOException(Unable   to   read   data   from   the   transport   connection:   远程主机强迫关闭了一个现有的连接。.)

这些个异常多出几次之后,   再次创建的HttpWebRequest就下不动了,我的问题就是在这里,   怎么下不了了呢....   ....   #-_-

注意,   是下载几万个网页後才出现的.   我在网上搜索国外的还没看到类似的情况,   该Dispose的东西都Dispose了,   该Close该Abort的东西都做了处理了.


------解决方案--------------------
下载了几万个?
黑奴啊,非法用工,也得给人家休息吧,估计是罢工了!
------解决方案--------------------
据我估计不是你的问题,而是对方的问题,对方强制断开了你的连接!
------解决方案--------------------
把你的连接当非法用户处理了,你连接太频繁了.
------解决方案--------------------
你当人家的服务器是你实验设备!


自已提供一个测试服务器算了!
------解决方案--------------------
hehe
------解决方案--------------------
The underlying connection was closed: An unexpected error occurred on a send.

这里说明了错误是在你这方(发送时出错)并且刚好在几W个后出错还是多线程!!怀疑是线程处理有问题,也就是你Close和Dispose可能没成功把你机器的连接池给用光了.检查一下代码吧..
------解决方案--------------------
另外开一个线程,在这个线程run你的WebRequest,如果出错,就raise event,然后主线程处理,把这个线程关闭以后重开。因为没有具体例子,只能凭想象力试试看。
------解决方案--------------------
下载了几万个,真有你的
------解决方案--------------------
用过WebRequest,没有遇到。
有情顶一下。