了解ASP.Net会话的生命周期

时间:2009-06-04 15:01:36

标签: asp.net session iis asp-classic lifetime

我对ASP或ASP.Net会话生命周期(或生命周期)概念感到困惑。更具体地说,我的困惑是:

  1. IIS如何确定新会话何时开始以及现有会话何时结束?特别是当我们调用重定向代码时,IIS如何决定会话是继续还是结束?
  2. 我们如何设置会话过期时间? (目前我只知道通过web.config sessionState项目进行设置。)
  3. 一个会话是否可以访问另一个会话的变量?

4 个答案:

答案 0 :(得分:5)

  1. 会话启动是因为请求不包含会话cookie,或者它包含的会话cookie不再包含会话映射。会话以a)结束空闲,没有进一步的请求在超时期间引用它。 b)它故意被代码中止。 c)进程中的进程会话在进程中死亡,例如,当应用程序被回收时。

  2. 更改超时的不同方法基本上是修改web.config或从中继承值的配置文件。

  3. 除非会话对象是由另一个会话可以访问的代码故意放置的。

答案 1 :(得分:4)

通常通过在客户端计算机上生成唯一标识符作为cookie来处理会话。这通常是会话cookie,因此您无法轻松获得它。当您访问使用会话的站点时,它会查找此cookie。如果找不到,则会创建一个新会话,从而创建一个新会话。

设置过期时间的一种方法是在web.config中,您也可以通过转到您的网站属性在IIS中设置它 - >主目录选项卡 - >配置按钮 - >选项标签 - >会话超时。

您将无法访问其他会话数据。

答案 2 :(得分:3)

您可以使用以下方式以编程方式设置会话超时:

Session.Timeout = 60; 

答案 3 :(得分:1)

不要忘记AppPool设置...默认情况下(无论如何,IIS 6)它将每120分钟回收一次。因此,某人可能会以低于设置的Session_Timeout值丢失会话。