|
背景。一个页面,服务器会根据来源IP不同来返回不同的页面信息。
现象:用你的框架,每隔1s循环GET一个网页的数据。中途,挂上VPN切换到另外的IP。此时GET到的数据,跟之前没挂VPN获取的数据是一样的。关闭程序再打开,获取到的页面就是挂VPN后的信息了。
无效的解决方法:
keep-alive修改。资源回收。
分析:
查看源码发现,Base文件夹下的HttphelperBase.cs中,GetHtml方法获取页面响应用是这样写的:
//请求数据
using (response = (HttpWebResponse)request.GetResponse())
{
GetData(item, result);
}
这种写法在获取到页面信息后,似乎并没有释放掉请求实例。
每次请求时,分别new一个HttpHelper,item,result似乎还是会获得上一次的请求。
修改建议:
我在GetData方法里的最后,加上
request = null;
response = null;
后,发现不用启动程序也可以获取正确的响应数据了。问题得到解决。
这个框架是飞哥搞的,你肯定比我更了解这个框架。我加上这句虽然把问题解决了,但是并不一定是最好的位置。飞哥可以考虑一下加在哪里更合适。或者还有什么其他方法能解决这个问题。
希望你的框架越来越好。
|
|