保持会话活着C#

时间:2009-12-10 15:29:41

标签: c# httpwebrequest

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

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

3 个答案:

答案 0 :(得分:3)

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

在上面的示例中,“客户端”即浏览器中的html / javascript和“服务器”将一起编写,因此内置了此类功能。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

(Javscript / Jquery)

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

服务器侧 在服务器上的KeepSessionAlive文件中,您可以向会话写一些内容,fe:

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