- 浏览: 147222 次
- 性别:
- 来自: 汕尾
文章分类
最新评论
保持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里却只有管理员可以设,两者的权限不同,所以设置的范围就不同了。
发表评论
-
终于能拿到私活的第一笔款了
2012-05-25 07:22 866用两周的时间全力做了一套酒店门户网站,包括后台管理网站和最 ... -
.net 隐式转换和显式转换
2012-05-11 07:15 7921.隐式转换:(String不能隐式转换为int) int ... -
解释性语言和编译性语言的区别
2012-05-10 23:02 913计算机不能直接理解高 ... -
.net身份验证机制
2012-05-10 22:47 7221.Windows 依赖于iis提供的验证方式,匿名、基本身 ... -
.net 并发控制方式
2012-05-10 22:35 11251.保守式并发控制 独占式处理,数据在完成更新完成之后才解锁 ... -
String、StringBuffer、StringBuilder的区别
2012-05-10 22:20 7531.String是字符串常量;StringBuffer、Str ... -
对主管的判断
2012-05-03 22:57 704一个个的诺言,不能实现,慢慢地让我对这个主管失去信心,4月 ... -
成熟的标志
2012-04-22 23:14 662一:沉稳(1)不要随便显露你的情绪。 没做到(2)不要逢人就诉 ... -
机会?陷阱?
2012-04-22 23:12 664主管想带我跳槽,提供比现在翻倍的工资,但却打乱了原先的计 ... -
每日总结20120415(周日)
2012-04-15 21:54 762前面的总结终于慢慢地发挥作用了,现在已经基本上了解自己的工作 ... -
每日总结20120410
2012-04-10 23:33 777今天学车,我是第一个上车了,第一次就把车踩熄火了,悲催。关 ... -
每日总结20120409
2012-04-09 22:22 690尝试了一下去见见一些老同学,发现了很多新的东西,人确实是一 ... -
每日总结20120406
2012-04-06 23:01 603今天虽然排除不了外界的干扰,但思路清晰的做事情,让我至少维 ... -
每日总结20120405
2012-04-05 22:39 720今天用做一个签核组织功能模块,分别预测自己能用15分钟做 ... -
每天一个小时听写英语
2012-04-05 20:59 929第一个目标:能一句句的听写读出听到的英文。 -
现有技能水平
2012-04-04 23:56 476.net:初级,能看懂和利用别人的框架,改改贴贴,根据需要添 ... -
不抱怨,说到做到
2012-04-04 23:31 536没出息的人只会抱怨现实或其他人其他条件对自己的不公,实现不 ... -
要在一个领域取得成就,就必须有对该领域的独特的执着
2012-04-03 23:34 990做什么事情都三分钟热度,永远都没有办法学精。对语言的感情, ... -
从来没有那么渴望顶端的风景过
2012-03-29 22:08 686平庸太无趣了,只有爬得更高才能看到更多的乐趣,体验到更多 ... -
思路一定要清晰
2012-03-26 23:21 560今天过了理论考试,把然后把项目要好好地测试了一下,发现了 ...
相关推荐
方法一: 在后台应用程序中设置:Session.Timeout = 1; 注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se
设置Session过期时间的方法有多种: 1. **编程方式**: 通过Java代码设置Session的过期时间,例如在主页面或公共页面中加入以下代码: ```java HttpSession ses = request.getSession(); ses....
总结来说,要严格控制PHP中的session过期时间,需要综合考虑客户端cookie的生命周期、服务器端的垃圾回收机制以及代码层面的session检查。理解这些机制可以帮助开发者更好地管理和维护用户的会话状态,提供更加安全...
然而,Session不能永久保存,为了防止恶意用户长时间占用服务器资源,通常会设置Session过期策略。 **Session过期的实现方式** 1. **设置Session超时时间**:在服务器端,可以通过配置Web服务器或应用服务器的...
默认情况下,PHP的Session过期时间由`session.gc_maxlifetime`配置决定,单位是秒。你可以通过`ini_set`函数来动态设置它,如下所示: ```php ini_set('session.gc_maxlifetime', 3600); // 设置为3600秒,即1小时...
7. **源码解析**:深入理解源码可以帮助我们更好地控制Session过期处理。例如,Tomcat服务器的Session管理源码可以揭示其内部如何检查Session过期,以及触发销毁的过程。 8. **工具辅助**:开发者可以利用各种工具...
如果你希望更精确地控制session过期,你可以调整`session.gc_probability`和`session.gc_divisor`的值,例如,将`session.gc_divisor`设为1,使得每次请求都进行GC检查。但这样做可能会增加服务器的负担,因为GC过程...
本文将介绍几种设置严格控制session过期时间的方法。 首先,要了解PHP session的生命周期是如何设置的。PHP session的默认生命周期可以通过php.ini文件中的session.gc_maxlifetime参数进行修改。这个参数表示垃圾...
首先,Django默认的Session过期时间是在用户关闭浏览器时,这可以通过`SESSION_EXPIRE_AT_BROWSER_CLOSE`设置控制。默认情况下,这个值为False,意味着Session会话将在设定的时间内过期,而不仅仅是当浏览器关闭时。...
`Session`有一个默认的超时时间,一般为20分钟,超过这个时间用户被认为已离线。可以定期遍历所有活跃的`Session`,检查其包含的用户登录状态,从而更新在线用户数。 在`session_timeANDtimes`这个文件名中,可能...
例如,在拦截器的`preHandle()`方法中,检查当前请求的Session是否有效,如果发现Session已经过期,就通过`response.sendRedirect(String url)`重定向到登录页面。 在这个项目中,开发者可能已经实现了这些功能,但...
总结一下,PHP中的Session过期时间可以通过`session.gc_maxlifetime`设置,并通过回收机制检查并删除过期的Session文件。回收概率由`session.gc_probability`和`session.gc_divisor`控制。了解和正确配置这些参数对...
- **处理会话过期**:设置合理的`Session`超时时间,当`Session`过期时,减小在线用户计数器并将用户从在线列表中移除。这可以通过监听`Session_End`事件在全局.asax文件中实现。 - **实时更新**:为了提供实时的...
// 设置1小时后Session过期 %> 登出 // logout.jsp session.removeAttribute("currentUser"); response.sendRedirect("login.jsp"); %> ``` ### 3. 开发环境:MyEclipse MyEclipse是一款集成开发环境,支持...
- **默认超时时间**:大多数 Web 应用框架(如 Java 的 Servlet API)默认的 session 超时时间为 30 分钟。可以通过配置文件调整这个时间。 - **自定义超时时间**:在实际应用中,开发者可以根据需求自定义 session ...
如果不存在或者Session过期,说明用户未登录或者登录状态已失效。 三、Session判断用户名登录 判断用户名登录的过程主要涉及以下几个步骤: 1. 用户提交登录信息:用户输入用户名和密码,点击登录按钮,这些信息...
- 在Spring Boot的配置类中,配置`RedisHttpSessionConfiguration`,指定Redis存储Session的前缀、过期时间等参数。 - 如果需要自定义Session ID的生成策略,可以实现`SessionRepository`接口并进行配置。 4. **...
可以通过调整Web.config中的`timeout`属性或在代码中动态修改`Session.Timeout`来控制Session过期时间。 9. **状态共享** 在多服务器环境中,需要确保Session状态的一致性。StateServer和SQLServer模式可以很好地...