6

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

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

4 回答 4

5

会话通常通过在客户端机器上生成一个唯一标识符作为 cookie 来处理。这通常是一个会话 cookie,所以你不能轻易得到它。当您访问使用会话的站点时,它会查找此 cookie。如果没有找到它,它会创建一个新会话,从而创建一个新会话。

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

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

于 2009-06-04T15:06:26.837 回答
5
  1. 会话开始是因为请求不包含会话 cookie 或它包含的会话 cookie 不再映射到会话。会话以 a) 结束,它处于空闲状态,在超时期间没有进一步的请求引用它。b)它被代码故意中止。c) 进程内会话终止,例如当应用程序被回收时。

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

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

于 2009-06-04T15:09:05.863 回答
3

您可以通过以下方式以编程方式设置会话超时:

Session.Timeout = 60; 
于 2009-06-24T20:59:43.860 回答
1

不要忘记 AppPool 设置...默认情况下(无论如何是 IIS 6)它将每 120 分钟回收一次。因此,有人可能会在小于设置的 Session_Timeout 值的时间内失去他们的会话。

于 2009-06-24T21:05:10.400 回答