我对ASP或ASP.Net会话的生命周期概念感到困惑。具体来说,我的困惑是:
- IIS如何决定何时开始新会话并结束现有会话?特别是当我们调用重定向代码时,IIS如何决定会话是继续还是结束?
- 我们如何设置会话过期时间?(目前我只知道通过
web.config sessionState
项进行设置。) - 一个会话是否可以访问另一个会话的变量?
我对ASP或ASP.Net会话的生命周期概念感到困惑。具体来说,我的困惑是:
web.config sessionState
项进行设置。)会话通常通过在客户端机器上生成唯一标识符作为cookie来处理。这通常是一个会话cookie,因此您无法轻易地访问它。当您访问使用会话的网站时,它会查找此cookie。如果找不到它,它将创建一个新的cookie,从而创建一个新的会话。
设置过期时间的一种方法是在web.config中进行设置,您还可以通过转到网站属性 ->主目录选项卡 ->配置按钮 ->选项选项卡 ->会话超时,在IIS中进行设置。
您将无法访问其他人的会话数据。
如果请求不包含会话cookie,或者它包含的会话cookie不再映射到会话,则会话开始。会话在以下情况下结束:a) 它在超时期内没有进一步请求参考它而变得空闲。b) 它被代码有意中止。c) 在处理过程终止时(例如应用程序被重新启动),进程内会话也将终止。
更改超时的不同方法基本上是通过修改web.config或从中继承值的配置文件来实现。
除非会话对象被有意地放置在其他会话可以访问的位置,否则不会出现这种情况。
您可以使用以下代码程序性地设置会话超时时间:
Session.Timeout = 60;
别忘了 AppPool 的设置...默认情况下(至少在 IIS 6 中),它会每隔 120 分钟回收一次。因此,有可能某个人的会话时间比设置的 Session_Timeout 值还要短。