一、Session周期
新的浏览器窗口启动后,开始一个新的Session,触发Global的Session_Start的调用,从第一个浏览器窗口打开的浏览器窗口不启动新的Session。Session过期后,执行页面的提交也会触发Session_Start,等于是新的一个Session。
二、Session数据有效期
只要页面有提交活动,则Session的所有项都会保持,页面在20分钟(默认配置)内没有任何提交活动时Session会失效。Session内存储的多个数据项是整体失效的。
三、关于Session清除
有时候session_start激发了,而session_end没有激发,保存在session中的数据也无法清除,占用内存,这是怎么回事了?怎么解决?
两个必要条件,我们终于可以得出要让Session_OnEnd执行的充分条件了:
◆ 至少有一个Request成功完整地执行
◆ 至少存储一些data在Session State中。可以通过Session变量或者加上Session_OnStart来实现;要建立一个持续的Session,咱们需要至少使用一下Session变量,用行话来说,就是要至少往Session Dictionary中写入一次;当不存储一些data在Session State中时,Session ID其实是在不停的变化的。也就是说,这时候在服务器端,根本就不关心这个client的存在,每次都觉得它是来自一个新的client。
相关链接: http://kb.cnblogs.com/page/108689/