保持会话活着C#

我正在使用HttpWebRequest登录网站并获取会话cookie。 我的应用程序刮擦某些页面,最终变为空闲,导致会话死亡。

什么是防止这种情况的良好方法 – 只是好奇 – 网络浏览器如何做到这一点?

浏览器本身根本不这样做。 他们只有在Web App本身支持它的情况下才会这样做。 例如,可能有一些javascript每隔30秒左右发出一次AJAX请求,向服务器发送“keep-session-alive”类型请求,然后该服务器将更新其状态信息以反映“最近的活动” “现在,因此阻止会话超时。

然而,在上面的例子中,浏览器中的“客户端”即html / javascript和“服务器”将被一起写入,因此内置了这种类型的function。

如果您不负责服务器端应用程序,因此无法自己构建“保持活动”function,您最好的选择是要实际访问网页,查看所有的JavaScript尝试找到可能的“保持活动”代码(在他们可能正在使用的任何js框架中查找SetTimeout,SetInterval或相关方法)。 当然可能没有任何此类function,在这种情况下,您最好的选择是简单地“刷新”您所在的页面(即再次发送相同的请求)

除非您通过以特定的固定间隔(例如每10-15分钟)请求相关网站的特定资源来保持会话处于活动状态,否则您无法阻止它。

客户端:每隔x分钟调用一次服务器,确保不经常使用。 最好是在会话超时值下:

(Javscript / Jquery)

$(function() { setInterval(function() { $.post("/KeepSessionAlive.ashx", null, null); }, 60000 ); }); 

服务器端:在服务器上的KeepSessionAlive文件中,你向会话写了一些东西,fe:

 context.Session["KeepSessionAlive"] = DateTime.Now;