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