苏飞论坛

标题: 飞哥,提个修改建议给你 [打印本页]

作者: zdking    时间: 2017-6-3 17:27
标题: 飞哥,提个修改建议给你
背景。一个页面,服务器会根据来源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;

后,发现不用启动程序也可以获取正确的响应数据了。问题得到解决。

这个框架是飞哥搞的,你肯定比我更了解这个框架。我加上这句虽然把问题解决了,但是并不一定是最好的位置。飞哥可以考虑一下加在哪里更合适。或者还有什么其他方法能解决这个问题。

希望你的框架越来越好。



作者: 站长苏飞    时间: 2017-6-5 08:31
很感谢你的建议,这个我有时间做个测试,看怎么修改比较适合,这个问题一直存在,不过也是在特定需求下才能出现,一般情况下是没有问题的,不过如果每次清理,多少还是会影响性能了,我会考虑尝试增加一个开关设置的

作者: zdking    时间: 2017-6-5 09:45
站长苏飞 发表于 2017-6-5 08:31
很感谢你的建议,这个我有时间做个测试,看怎么修改比较适合,这个问题一直存在,不过也是在特定需求下才能 ...

嗯。我也是有点担心性能。不过这样至少可以保证每次获取到的数据都是最新的。看飞哥你准备怎么改了
作者: 站长苏飞    时间: 2017-6-5 09:59
zdking 发表于 2017-6-5 09:45
嗯。我也是有点担心性能。不过这样至少可以保证每次获取到的数据都是最新的。看飞哥你准备怎么改了

那就加开关,
作者: 小哲    时间: 2017-6-6 19:16
加个开关好了.默认关闭
作者: v刀刃    时间: 2017-6-16 12:47
强烈支持楼主ing……
作者: howzew    时间: 2017-11-7 15:20
这个想法好
作者: 站长苏飞    时间: 2017-11-7 17:04
版本已经更新
重置request 配置属性
IsReset即可Httphelper万能框架新增重置重置request,response为空的属性
http://www.sufeinet.com/thread-19269-1-1.html
(出处: 苏飞论坛)







欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4