iframe保持活动功能 - 重置会话超时需要什么?

时间:2009-08-13 09:09:52

标签: asp.net session-timeout

我有一个隐藏的iframe,只要用户在线,就会不时刷新,以保持ASP.NET会话的正常运行。

但是,我一直在收到有关用户遇到会话超时的报告,所以现在我对重置会话计时器需要什么感到怀疑。

隐藏的iframe的内容页面(简单的html页面)会以一定的时间间隔自行刷新,这显着小于会话超时。

我的问题是:即使服务器使用HTTP / 1.x 304 Not Modified进行响应,是否足够(让会话计时器重置)让页面自行刷新?

只是GET请求本身告诉网络服务器重置会话计时器吗?

或者我是否需要确保实际获取页面并接收HTTP / 1.x 200 OK响应?

1 个答案:

答案 0 :(得分:6)

要使会话保持活动,您只需向当前会话中的页面发送请求即可。您可以通过iframe或通过ajax执行此操作。

如果您只是刷新IFrame中的页面,则响应可能是缓存的 - 因此304.您必须每次都发送一个新请求 -

var url = "http://domain.com/defibrillator.aspx?" + (new Date()).getTime();

E.g。

http://domain.com/defibrillator.aspx?1556467987987
http://domain.com/defibrillator.aspx?5448796497878
http://domain.com/defibrillator.aspx?4123165487987
....

编辑1

或者您可以使用Refresh HTTP header attribute


编辑1.1

如果您正在使用上面提到的codeproject文章,那么尝试使用AJAX而不是iframe对其进行建模 - 它会为您节省几个字节的额外iframe标记。


编辑2 - 关于HTTP 304 Not Modified

  

如果客户已经执行了   条件GET请求和访问是   允许,但文件还没有   修改后,服务器应该响应   使用此状态代码。 304   响应不得包含   消息体,因而永远   由第一个空行终止   在标题字段之后。

这意味着请求尚未到达ASP.NET管道,并且直接由IIS本身提供服务。 ASP.NET环境不知道已发出请求。因此,它不会执行会话续订。