HTTP 会话失效
通过在会话对象上调用失效方法或通过使用 MaxInactiveInterval 属性指定特定的时间间隔,可以使 HTTP 会话失效。
被应用程序代码明确作废的会话会立即失效。未被应用程序代码作废的会话将被会话管理器作废。无论会话的配置是否持久,都会发生会话失效。
如果会话在超过指定的会话超时(由 MaxInactiveInterval 值指定)时期后未被访问,就会失效。会话管理器每隔 X 秒运行一次失效过程线程来使符合失效条件的会话失效。
会话管理器使用一个公式来确定 X 的值,由 ReaperInterval 属性指定。X 的值根据会话管理器中指定的 MaxInactiveInterval 值来计算。
例如,对于不到 15 分钟的最大停用间隔,ReaperInterval 值约为 60 到 90 秒。对于超过 15 分钟的最大停用间隔,ReaperInterval 值约为 300 到 360 秒。
当超出 MaxInactiveInterval 且 ReaperInterval 已过时会话失效。当会话符合失效条件后,必须为要失效的会话运行失效线程。因此,在 MaxInactiveInterval 和 ReaperInterval 值的总和秒数内,会话可能未失效。
已经超过了 MaxInactiveInterval 但尚未被失效线程移除的会话仍可使用。如果请求该会话,那么会将其返回到客户机。
您可以指定会话是立即失效,还是在指定的时间间隔后失效。要使应用程序立即失效,应调用失效方法。要让会话在特定的时间失效,可以设置 ReaperInterval Web 容器定制属性(以秒计)来指定失效线程的频率。