我们已经知道,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();
相关推荐
NULL 博文链接:https://selvemen.iteye.com/blog/457225
通过设置session的生命周期来对session进行控制
实现session会话控制的webservice服务,带有完整类库,希望能对大家有所帮助。
c#.net配置Session的生命周期.rar
一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。 如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候...
Invocation生命周期,Session生命周期,Server生命周期
session的生命周期1
使用监听器跟踪session的生命周期和session的属性,文档详细介绍了
session、viewstate jQuery SQL存储过程等一系列教学网站 相当实用哦
系统架构前端系统主要扮演Client的角色,主要负责计算图的构造,并管理Session生命周期过程。前端系统是一个支持多语言的编程环境,并提供统一的编程模型支撑用户构造计算图。Client通过Session,连接TensorFlow后端...
Application,Session,Cookie,ViewState和Cache生命周期
Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached Objects)、 Java对象在JVM中的生命周期 理解Session的缓存 在Hibernate应用...
php5的session详解.pdf php5 的session详解其一:什么是session? php5 的session 详解之二:有两种方法传递 一个会话ID: php5 的session 详解之三:session安全 php5 的session 详解之四:……
调用update即可,即使不在Session生命周期之内. 同时多数据库支持:同样一个pojo,可以保存到不同的数据库,而不且每个数据库都加载映射文件。 同结构表支持:一个POJO可以保存在不同的表中,而这个表可以在数据库中...
程序员必看_生命周期 是英文版的比较了session等的生命周期
多表查询,延长session生命周期,不改配置文件……
本文较为详细的比较了php中session与cookie区别。分享给大家供大家参考。具体分析如下: 1、存放的位置 cookie保存在客户端,session保存在服务器端的文件系统/...session的生命周期是间隔的。从创建时开始计时,如果
Jsp内置对象session总结:详细介绍,Session机制,原理,生命周期h和Session的主要方法等。
一个PO有三种状态: 1、未被持久化的VO 此时就是一个内存对象VO,由JVM管理生命周期 2、已被持久化的PO,并且在Session生命周期内 此时映射数据库数据,由数据库管理生命周期 3、曾被持久化过,但现在和Session已经...