高分求解--抓取程序遇到的很奇怪问题!
我用
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(Url);
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.Default);
取得网页的内容,程序是能够很好的运行的,但运行一段时间后总出现这样的错误提示:
“ 上下文“0x1a1db0”已断开连接。正在从当前上下文(上下文 0x1a1c40)释放接口。这可能会导致损坏或数据丢失。要避免此问题,请确保在应用程序全部完成 RuntimeCallableWrapper (表示其内部的 COM 组件)之前,所有上下文/单元都保持活动状态。”
在 baidu/google 上搜索 "0x1a1db0 "一条数据也没!
还有我抓取时每抓一条数据就往.txt文件中写入一条记录,程序运行后内存猛增,我在每一次循环执行后都加了
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
还是一样,没有任何效果。
请问高手怎么能够解决这些问题啊,多多感谢!
------解决方案--------------------抓取程序通常需要加个try
------解决方案--------------------另外记得close
------解决方案--------------------加try catch
如果发生异常,循环重试
能Close的Close
能Dispose的Dispose
------解决方案--------------------应该是流的问题 你抓后要将resStream 释放 StreamReader 读完后关闭 关闭前再dispose一下看看问题是否还出现
------解决方案--------------------sr和response没Close