Seesion的过期问题

Session 的过期问题
关于ASP.NET会话管理,重要的一点是,仅当将第一个项目添加到内存词典中时,会话状态对象的生命周期才开始。仅在执行如下代码片断后,才可以认为ASP.NET会话开始。


Session["MySlot*]-=“Some data"

Session词典通常包含 Object类型,要向后读取数据,需要将返回的值转换为更具体的类型。

string data = Session ["MySlot”] as string;

当页面将数据保存到Session 中时,会将值加载到 HttpSessionState类包含的特制的词典类中。完成当前处理的请求时,会将词典的内容加载到状态提供程序中。将为每个请求生成一个新的会话ID,直到将某些数据存储到会话词典中。
如果会话超时或被放弃,下次访问无状态应用程序时,其会话ID不会发生改变。经过设计后,即使会话状态过期,会话ID也能持续到浏览器会话结束。也就是说,只要浏览器实例相同,就始终使用同一个会话ID表示多个会话。
Session_OnEnd事件标志着会话的结束,并用于执行终止该会话所需的所有清除代码,但请注意,只有InProc 模式支持该事件,也就是说,只有将会话数据存储在ASP.NET 辅助进程中时才支持该事件。对于要引发的Session_OnEnd事件来说,必须首先存在会话状态,这意味着必须在该会话状态中存储一些数据,并且必须至少完成一个请求。
对于Session来说,关键的问题在于过期指的是某个会话整个Session的过期,并不是针对其中某个数据的过期,要么整个Session 过期后丢弃掉,要么所有的数据都被保留下来,在每一次请求的时候都会被加载到内存中,这可能会造成内存的浪费。所以,在使用Session 的时候,我们必须要谨慎选择保存的数据。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值