【发布时间】:2010-10-02 19:43:47
【问题描述】:
应用程序在 Application_AcquireRequestState 事件处理程序中设置 session.timeout。
在会话到期之前,会弹出通知窗口。它通过 Application_AcquireRequestState 将会话超时重置为 3 分钟(通常为 30 分钟)。
通知为用户提供了将会话再延长 30 分钟的选项。如果用户单击是,它将通过先前的事件处理程序将会话超时重置 30 分钟。
问题是,尽管用户单击是,并且会话超时设置正确,但会话似乎在设置时间之前超时。这只会在通知后发生。
怀疑是当它到达 Application_AcquireRequestState 时,已经为这个请求计算了超时。新的超时值将用于下一个请求。因此,当用户单击“是”以延长会话时,当前请求的超时时间不是 30 分钟,而是只有 3 分钟,因为通知窗口设置了超时。只有当用户发送另一个请求时,yes 才会生效。
(通知窗口有自己的计时对象)
任何人都可以验证这一点吗?或者指出一个很好的资源来解释 asp.net 是如何管理这个的?
谢谢!
【问题讨论】: