【问题标题】:Session-State In-Process (InProc) mode: When is it forgotten?Session-State In-Process (InProc) 模式:什么时候被遗忘?
【发布时间】: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 中的身份验证密钥只是会话的不透明标识符。当然它已经记录在案了,但是我非常确信这就是它的工作原理,所以我没有费心去深入研究它。

标签: asp.net session iis


【解决方案1】:

与我的假设相反,cookie 中的身份验证条目不仅是会话的不透明标识符,而且实际上是具有到期时间的加密用户名。它根本与会话没有直接关系,其有效性独立于任何会话的有效性。

这意味着身份验证到期和会话丢失是两个不同的事件,通常发生在不同的时间

查看thislink 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多