【发布时间】:2014-05-04 20:08:43
【问题描述】:
我在我的 Web 应用程序中使用 InProc 会话状态模式。
为了测试客户端在会话丢失时的行为,我重新启动了 Web 服务器,首先是 iis,然后是整个机器。两种操作都没有导致会话丢失。
这让我很困惑:会话存储在内存中,对吗?机器重启后如何保留会话? IIS 是否会在重新启动时转储磁盘上的会话?如果是这样,这在哪里记录,我如何刷新会话以进行测试?
我在 Windows Server 2012 上使用 IIS 8。
编辑:我不知道我是否真的失去了 session - 我知道我的 cookie 仍然被接受。 (我实际上并没有使用任何“会话”,我只需要对用户进行身份验证。)可能是即使在实际会话丢失后身份验证票仍然可用,正如 here 所建议的那样。
编辑:另请查看here,了解有关表单身份验证 cookie 及其内容的更多信息。
【问题讨论】:
-
你确定吗? InProc 存储不仅不能在服务器重启时存活,甚至在工作进程重启时也不应该存活。
-
@WiktorZychla 可能没有,看我的编辑。
-
这改变了一切。即使服务器重新启动,当然也接受 Cookie。我建议你删除这个问题,因为它现在没有多大意义。
-
您可能对什么是 cookie 和什么是会话感到困惑。一旦工作进程关闭,进程内会话就消失了。
-
我认为它的工作原理并不明显——我一直认为 cookie 中的身份验证密钥只是会话的不透明标识符。当然它已经记录在案了,但是我非常确信这就是它的工作原理,所以我没有费心去深入研究它。