session的生命周期
来源:互联网 发布:疯狂java讲义 注解 编辑:程序博客网 时间:2024/06/16 10:57
Session是在用户第一次访问网站的时候创建的,那么Session是什么时候销毁的呢?
其实,Session使用一种平滑超时的技术来控制何时销毁Session。默认情况下,Session的超时时间(Timeout)是20分钟,即用户保持连续20分钟不访问网站,则Session被收回。如果在这20分钟内用户又访问了一次页面,那么20分钟就重新计时了。也就是说,这个超时是连续不访问的超时时间,而不是第一次访问后20分钟必过时。当然,你可以通过修改Web.config文件的配置项来调整这个超时时间,如下面的代码所示:
<sessionState timeout="30"></sessionState>
你同样也可以在程序中进行设置,如下面的代码所示:
Session.Timeout = "30";
一旦Session超时,Session中的数据将被回收,如果你再次使用Session,将给你分配一个新的SessionID。
不过,你可别太相信Session的Timeout属性,如果你把它设置为24小时,则很难相信24小时之后用户的Session还在。Session是否存在,不仅仅依赖于Timeout属性,以下的情况都可能引起Session丢失:
1)bin目录中的文件被改写。asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失。
2)SessionID丢失或者无效。如果你在URL中存储SessionID,但是使用了绝对地址重定向网站导致URL中的SessionID丢失,那么原来的Session将失效。如果你在Cookie中存储SessionID,那么客户端禁用Cookie或者Cookie达到了IE中Cookie数量的限制(每个域20个),那么Session将无效。
3)如果使用InProc的Session,那么IIS重启将会丢失Session。同理,如果使用StateServer的Session,服务器重新启动Session也会丢失。
如果你需要遍历当前的Session集合,你可以这样来处理,如下面的代码所示:
IEnumerator SessionEnum = Session.Keys.GetEnumerator();while (SessionEnum.MoveNext()){ Response.Write(Session[SessionEnum.Current.ToString()].ToString() + "<br/>");}
有时候,我还需要立刻让Session失效。比如用户退出系统后,Session中保存的所有数据需要全部失效。处理方法如下面的代码所示:
Session.Abandon();
- Session Bean 的生命周期
- session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- session的生命周期
- Session的生命周期
- session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- session 的生命周期
- Session的生命周期
- 设置SESSION的生命周期
- 【Oracle】day03_查询语句_聚合函数_关联查询
- chown命令
- 服务化(RPC)思想的建立
- mysql联合索引
- etc/fstab文件
- session的生命周期
- Unity3d实现相机的跟随缩放旋转
- 将map型数据转换成json格式的字符串
- 逆矩阵(inverse matrix)的概念及其意义
- post和get的区别
- HDU 1253 胜利大逃亡
- 四大作用域
- 嵌入式入门之制作可烧写的TF/SD卡
- 一个不错的Mysql的分析