【问题标题】:Session timeout after 30 minutes in asp.net在 asp.net 中 30 分钟后会话超时
【发布时间】:2011-10-18 07:53:20
【问题描述】:

我在 Session 中存储了一些信息,但 Session 每次都会被销毁。我不知道为什么会这样。我正在使用 IIS7。

这是我所做的设置:

<sessionState cookieless="AutoDetect" mode="InProc" timeout="120" />

我在用户注册时存储了一些信息,但我的客户抱怨说,当他闲置 20-30 分钟时,信息会丢失。我在一个自定义的应用程序池中运行应用程序,其空闲超时为 20 分钟(在应用程序池的属性中)。会不会是这个问题?

其次,即使我已将超时指定为 120 分钟,但是当我单击 IIS7 中的“会话状态”图标时,它不会在任何地方显示 120 分钟。可能是什么问题?

更新:在 IIS7 的“会话状态”中的 cookie 设置中,我看到 Asp_NetSessionId 的超时时间为 5 分钟。这会是罪魁祸首吗?

【问题讨论】:

    标签: asp.net iis-7


    【解决方案1】:

    是的,当您在 AppPool 设置中指定空闲超时时,它基本上会杀死您的工作进程,进而破坏您的会话。

    您将在 Cookie 设置选项卡下看到该值,因为处理 InProc 会话的方法之一是通过 Cookie。

    【讨论】:

      【解决方案2】:

      如果您将会话存储在 InProc 中,那么应用程序将每 20 分钟重新启动一次,并且所有会话都将丢失。 运行 StateServer 服务并使用

      <sessionState mode="StateServer" timeout="120" />
      

      在 web.config 中。然后您不必关心应用程序的重启频率,您甚至可以上传新版本并保留会话。

      【讨论】:

        【解决方案3】:

        如果您的应用程序池在 20 分钟后被销毁,那么考虑到您的会话处于进程状态,这将是一个问题。增加应用程序池的超时时间为120分钟

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          • 2015-11-15
          • 2021-10-25
          • 1970-01-01
          • 1970-01-01
          • 2018-05-15
          相关资源
          最近更新 更多