【问题标题】:IIS default time-outsIIS 默认超时
【发布时间】:2012-02-12 14:25:13
【问题描述】:

我知道以下步骤允许我在 IIS 中配置超时值,但是它们之间有什么区别。默认情况下,web.config 文件中的 ASP.NET 会话状态和 CookieTimeout 值也是如此,因为我在配置编辑器中看不到它们。如果是这样,我需要对 web.config 文件进行哪些更改以及它如何影响其他超时更改?

步骤

  1. 会话超时默认为 20 分钟。值受到影响 包括应用程序池、ASP、ASP.NET 在内的多项设置 会话状态,CookieTimeout。
  2. 打开 IIS 管理器
  3. 应用程序池->高级设置->进程模型->设置空闲 以分钟为单位的超时
  4. 站点 -> your-website-domain.com -> ASP -> 会话属性 -> 超时然后应用更改
  5. 站点 -> your-website-domain.com -> 配置编辑器 -> system.web/sessionState -> 设置超时值然后应用更改
  6. 站点 -> your-website-domain.com -> 配置编辑器 -> system.web/roleManager => 设置 cookieTimeout 然后应用更改

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

    应用程序池超时后,应用程序池被回收。如果您使用默认 InProc 会话存储,则超时到期时所有会话都将丢失。通常,每次有人从应用程序请求页面时,都会重置超时。

    会话状态超时是会话存储中会话的到期时间。当此超时到期时,会话信息将从会话存储中删除并调用 Session_End。请参阅元素的文档,可以找到here

    您提到的 Cookie 超时是角色管理器用于将用户角色缓存在 cookie 中的 cookie 的到期时间。属性 cacheRolesInCookie 也必须设置为 true 才能产生效果 - 默认为 false。参考文档here

    我不相信会话状态或cookie超时默认包含在配置文件中,但这取决于生成配置文件的内容。如果您希望会话保持打开更长时间,您只需要设置 system.web/sessionState ,只要您的网站有足够的流量来防止应用程序池回收(每 20 分钟点击一页)。由于应用程序池回收还有其他原因,因此使用 InProc 以外的其他存储机制之一可能是个好主意。如果您使用的是身份验证提供程序之一,它可能会有额外的超时。我知道表单身份验证有一个您也想设置的超时。

    【讨论】:

    • 谢谢。我不太理解您所说的“但这取决于生成配置文件的内容”。您能否详细说明当您说“如果您希望会话保持更长时间打开时的意思,您应该只需要设置 system.web/sessionState ,只要您的网站有足够的流量来阻止应用程序池回收(每 20 分钟点击一页)”。
    • Visual Studio Web 项目为项目生成 Web.config 文件。不同版本的 Visual Studio 生成的文件之间存在一些差异。可能还有其他工具也可以生成 Web.config 文件。
    • system.web/sessionState 配置项是会话持续时间的主要控制点。如果您发现您的会话在基于此设置到期之前丢失,这不是由于此设置,而是由于 IIS 丢失了会话状态。一般情况下,应用池回收后工作进程重新启动会导致会话丢失,但工作进程会终止还有其他原因。
    猜你喜欢
    • 2012-07-17
    • 2010-11-23
    • 2015-08-26
    • 2017-12-25
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2011-01-15
    相关资源
    最近更新 更多