`
风火山林
  • 浏览: 147207 次
  • 性别: Icon_minigender_1
  • 来自: 汕尾
最近访客 更多访客>>
社区版块
存档分类
最新评论

session 过期时间控制

阅读更多

保持Session的方法:有人说设session.timeout=-1,或小于0的数。这种方法肯定是不行的,session计算时间以分钟为单位,必须是大于等于1的整数。又有人说设session.timeout=99999。这种同样不行,session有最大时间限制。我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,1441都是不可以有,呵呵。本人测试环境:win2003+IIS6.0+ASP3.0。

所以想通过设session.timeout的过期时间让session永不过期是不可能的。写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!还有就是用在要保持session的页里设隐藏iframe每隔一段时间(这个时间小于session.timeout的时间)把涮新一次frame里的空页面!实现方法如下:

在要保持session页里加上: <iframe width=0 height=0 src="/blog/SessionKeeper.asp">
</iframe>


同目录下建一下SessionKeeper.asp的文件。 <html>
<head>
<meta http-equiv="Refresh" content="900000;url=sessionKeeper.asp">
<!--每隔900秒刷新一下自己,为了和服务器通讯一下,保持session不会丢-->
</head>
</html>


这种方法还是比较长见的,另外还有一种和上面类似的方法,不过他不是用meta自动涮新嵌套的iframe的方法。他是用 javascript:window.setTimeout("functionname()",10000);第隔一段时间时间自动调用一个函数的方法,当然函数里还是要去连接一个空的文件。具体方法如下:

在要保持session面里加上: <script id=Back language=javascript></script>

<script language=javascript>
function keepsession(){
document.all["Back"].src="/blog/SessionKeeper.asp?RandStr="+Math.random();
//这里的RandStr=Math.random只是为了让每次back.src的值不同,防止同一地址刷新无效的情况
window.setTimeout("keepsession()",900000); //每隔900秒调用一下本身
}
keepsession();
</script>

这样同一目录下建一个空内容的sessionKeeper.asp就文件就可以了!

问题没有解决:通过以上的方法Session保持应该没有问题了,IIS默认无请求的清除session的值为20分钟,我设的每次交互服务的时间都远远小于这个值,可是我大概过个一天多的时间,session还是无缘无故的没了!郁闷。

后来在网上多方查找终于找到答案:原来IIS为了保护服务器,有一个“回收”的概念!测试了半天终于有了点大体了解(不要笑我菜^-^)。先来看看这个“回收”在哪设置。

启动IIS管理器->应用程序池->右键->属性->回收选项卡,有一项是默认就起作用的,就是第一项:“回收工作进程(分钟)”默认值1740分钟,大约29个小时。他是什么意思呢?我个人理解:在session.timeout之后再过1740分钟自动把所有仍在保持的session清除。这个值最大可设为4000000,大概是2700多天!我直接取消了,不用他自动回收!问题终于解决。

另外这个属性对话框中还有其它几项:

第二项应该是连接的用户超过了一定数目回收。

第三项是到某一个时间就自动回收。

在“性能”选项卡中“在空闲此时间段后关闭工作进程”,这里就是设置IIS默认session.timeout时间的地方了。默认值20分钟,这里同样最大值可设为4000000,和在ASP页中设置session.timeout最大值为1440不同。在这里设置超过大于1440的值是否起作用,我没作测试,我想应该是可以的。那为什么在ASP页中session.timeout的值最大只能是1440在IIS的属性中却能设的那么大呢?应该是属于一种保护机制:ASP页的session.timeout的值哪个用户都可以设,IIS里却只有管理员可以设,两者的权限不同,所以设置的范围就不同了。

分享到:
评论

相关推荐

    在ASP.NET中,设置Session的过期时间的方法

    方法一:  在后台应用程序中设置:Session.Timeout = 1;  注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se

    session过期时间设置

    设置Session过期时间的方法有多种: 1. **编程方式**: 通过Java代码设置Session的过期时间,例如在主页面或公共页面中加入以下代码: ```java HttpSession ses = request.getSession(); ses....

    php中精确控制session超时时间

    总结来说,要严格控制PHP中的session过期时间,需要综合考虑客户端cookie的生命周期、服务器端的垃圾回收机制以及代码层面的session检查。理解这些机制可以帮助开发者更好地管理和维护用户的会话状态,提供更加安全...

    session过期问题

    然而,Session不能永久保存,为了防止恶意用户长时间占用服务器资源,通常会设置Session过期策略。 **Session过期的实现方式** 1. **设置Session超时时间**:在服务器端,可以通过配置Web服务器或应用服务器的...

    详解php设置session(过期、失效、有效期)

    默认情况下,PHP的Session过期时间由`session.gc_maxlifetime`配置决定,单位是秒。你可以通过`ini_set`函数来动态设置它,如下所示: ```php ini_set('session.gc_maxlifetime', 3600); // 设置为3600秒,即1小时...

    session过期处理

    7. **源码解析**:深入理解源码可以帮助我们更好地控制Session过期处理。例如,Tomcat服务器的Session管理源码可以揭示其内部如何检查Session过期,以及触发销毁的过程。 8. **工具辅助**:开发者可以利用各种工具...

    php中实现精确设置session过期时间的方法

    如果你希望更精确地控制session过期,你可以调整`session.gc_probability`和`session.gc_divisor`的值,例如,将`session.gc_divisor`设为1,使得每次请求都进行GC检查。但这样做可能会增加服务器的负担,因为GC过程...

    php 如何设置一个严格控制过期时间的session

    本文将介绍几种设置严格控制session过期时间的方法。 首先,要了解PHP session的生命周期是如何设置的。PHP session的默认生命周期可以通过php.ini文件中的session.gc_maxlifetime参数进行修改。这个参数表示垃圾...

    用django设置session过期时间的方法解析

    首先,Django默认的Session过期时间是在用户关闭浏览器时,这可以通过`SESSION_EXPIRE_AT_BROWSER_CLOSE`设置控制。默认情况下,这个值为False,意味着Session会话将在设定的时间内过期,而不仅仅是当浏览器关闭时。...

    .net C# 利用session控制用户重复登录及统计在线用户数解决方案

    `Session`有一个默认的超时时间,一般为20分钟,超过这个时间用户被认为已离线。可以定期遍历所有活跃的`Session`,检查其包含的用户登录状态,从而更新在线用户数。 在`session_timeANDtimes`这个文件名中,可能...

    J简单的springmvc包括拦截、session设置,超时跳转

    例如,在拦截器的`preHandle()`方法中,检查当前请求的Session是否有效,如果发现Session已经过期,就通过`response.sendRedirect(String url)`重定向到登录页面。 在这个项目中,开发者可能已经实现了这些功能,但...

    php中session过期时间设置及session回收机制介绍

    总结一下,PHP中的Session过期时间可以通过`session.gc_maxlifetime`设置,并通过回收机制检查并删除过期的Session文件。回收概率由`session.gc_probability`和`session.gc_divisor`控制。了解和正确配置这些参数对...

    .net C# 通过session控制重复登录及在线用户统计

    - **处理会话过期**:设置合理的`Session`超时时间,当`Session`过期时,减小在线用户计数器并将用户从在线列表中移除。这可以通过监听`Session_End`事件在全局.asax文件中实现。 - **实时更新**:为了提供实时的...

    jsp实验报告7-基于session的访问控制

    // 设置1小时后Session过期 %&gt; 登出 // logout.jsp session.removeAttribute("currentUser"); response.sendRedirect("login.jsp"); %&gt; ``` ### 3. 开发环境:MyEclipse MyEclipse是一款集成开发环境,支持...

    JSPsession超时提示

    - **默认超时时间**:大多数 Web 应用框架(如 Java 的 Servlet API)默认的 session 超时时间为 30 分钟。可以通过配置文件调整这个时间。 - **自定义超时时间**:在实际应用中,开发者可以根据需求自定义 session ...

    session控制用户名

    如果不存在或者Session过期,说明用户未登录或者登录状态已失效。 三、Session判断用户名登录 判断用户名登录的过程主要涉及以下几个步骤: 1. 用户提交登录信息:用户输入用户名和密码,点击登录按钮,这些信息...

    SpringSession+Redis实现Session共享案例

    - 在Spring Boot的配置类中,配置`RedisHttpSessionConfiguration`,指定Redis存储Session的前缀、过期时间等参数。 - 如果需要自定义Session ID的生成策略,可以实现`SessionRepository`接口并进行配置。 4. **...

    IIS7 Session的方法

    可以通过调整Web.config中的`timeout`属性或在代码中动态修改`Session.Timeout`来控制Session过期时间。 9. **状态共享** 在多服务器环境中,需要确保Session状态的一致性。StateServer和SQLServer模式可以很好地...

Global site tag (gtag.js) - Google Analytics