【问题标题】:IIS 7.0 asp.net session timeoutIIS 7.0 asp.net 会话超时
【发布时间】:2025-12-02 15:40:01
【问题描述】:

我有以下要求: 我有一个有 2 个区域的网站

1) 公共 - 会话在代码中动态设置为 10 分钟(在 页面请求处理)
2)私人 - 会话设置为一小时 在代码中动态(在页面请求处理期间)

我的问题是我有 2 个行为不同的环境:

  1. 开发环境 - 按预期做出反应(公共和私有区域具有由代码定义的定义)。
  2. 生产环境-所有区域都有15(或20)分钟会话超时(时间取决于我定义的服务器 环境)。

由于描述,我理解代码本身不是必需的。

现在,这两种环境之间的唯一区别是生产具有 SSL 加密。

为了使两个环境的行为相同,我需要添加什么? 提前致谢。

【问题讨论】:

    标签: c# asp.net iis ssl


    【解决方案1】:

    检查 IIS 本身的设置。我相信默认值是 20 分钟,这可以解释为什么你会看到你所看到的。

    • 打开 IIS 管理器并导航到要管理的级别。有关打开 IIS 管理器的信息,请参阅打开 IIS 管理器 (IIS 7)。
      有关在 UI 中导航到位置的信息,请参阅
      在 IIS 管理器 (IIS 7) 中导航。

    • 在功能视图中,双击 ASP。

    • 在 ASP 页面的“服务”下,展开“会话属性”。

    • 在超时字段中,输入格式为 hh:mm:ss 的超时值。例如,输入 00:15:00 表示 15 分钟。

    • 在“操作”窗格中,单击“应用”。

    来自: http://technet.microsoft.com/en-us/library/cc725820(v=ws.10).aspx

    【讨论】:

    • 我忘了提到我已经尝试过了......不过 - 我需要在运行时对其进行修改(这就是我在代码中这样做的原因)。
    • 是的 - 问题是关于 SSL 和 ASP.NET,是的 - 默认情况下它们不共享相同的会话 ID,我在 web.config 中添加了选项(在 system.webserver部分)他们应该共享相同的 ASP 会话和中提琴 - 它有效!可能还有另一种方法 - 但我认为没有办法通过代码使这项工作......(因为它会遇到 SSL 或类似的安全问题)。
    【解决方案2】:

    检查 Windows 事件日志以确保工作进程没有被强制回收。

    您的代码中可能有一些东西会导致工作进程强制自己回收,在这种情况下,当会话被存储inProc 时,它将丢失它所持有的所有会话值。

    【讨论】:

    • 你能解释一下什么是“inProc Session”吗?它与 SSL 会话或 IIS 会话有什么不同?我知道在 IIS 中定义会话设置仅适用于经典 ASP 网站(不一定适用于 ASP.NET)。
    • 顺便说一句,工作进程在两种环境中都没有回收。尽管如此,会话已经结束(在两种环境中都是预期的和意外的)。