【问题标题】:How to stop session timeout after 20minutes in asp.net?如何在 asp.net 中 20 分钟后停止会话超时?
【发布时间】:2012-05-14 09:01:06
【问题描述】:

我正在使用 iis6 来部署我的应用程序。无论我如何更改 iis 配置中的超时或添加 global.asax 文件来设置 Session.Timeout,甚至使用 sessionstate,我仍然在 20 分钟后获得会话超时,这太疯狂了!有人请帮帮我吗?我被困住了..

web.config:

 <authentication mode="Forms">
          <forms name="__authcookie" loginUrl="LoginPage.aspx" timeout="60" protection="All" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
      </authentication>
      <sessionState mode="InProc" timeout="60" customProvider="AppFabricCacheSessionStoreProvider"></sessionState>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="NamedCache1" sharedId="SharedApp"/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>

【问题讨论】:

标签: c# asp.net visual-studio-2010


【解决方案1】:

将其包含在您的 web.config 文件中:

使用 web.config

    <sessionState timeout="minutes"/> 

使用 IIS

在 Internet 服务管理器中更改以下超时值。选择一个大于默认值 20 的值。

  1. 选择默认网站 > 属性 > 主目录 > 应用程序设置 > 配置 > 选项。

  2. 启用会话状态超时并将会话超时设置为 60 分钟。

  1. 选择应用程序池 > DefaultAppPool > 属性。

  2. 在空闲超时下的性能选项卡中,将空闲后关闭工作进程的值设置为大于 20。

IIS 上的默认会话超时设置为 20 分钟,但最长可以增加到 24 小时或 1440 分钟。

【讨论】:

    【解决方案2】:

    我最近一直在努力解决这个问题。似乎有很多地方可以设置超时,但您的超时只会与具有 shortest 设置的属性一样长。以下是我发现的一些东西......

    • 正如大家所建议的,检查 web.config 文件中“sessionState”节点的“timeout”属性。该值可以直接在 web.config 文件中编辑,也可以通过 IIS 配置进行编辑,如上面 @Romil 所述(尽管 UI 在更高版本的 IIS 中已更改,但设置类似)。

    • 如果您正在实施表单身份验证,那么在 web.config 文件中还定义了一个额外的超时设置。在 web.config 中查找 ... system.web > authentication > forms 节点,并将“timeout”属性也修改为所需的分钟数。 p>

    • 这是我忽略的...在 IIS 中(肯定是 7.5 版,可能更早,但我无法确认)右键单击关联的应用程序池并选择“高级设置”。在标题“Process Model”(必要时展开)下查找设置“Idle Time-out (minutes)”。将此设置为所需的超时时间(以分钟为单位)。 -- 解释: 虽然 sessionState > timeout 设置会影响将会话 ID 存储在浏览器中的 cookie 的过期时间,但 超时实际上决定了当工作进程(尚未使用)应该关闭时。一旦进程关闭,它就不再调用现有的会话 ID,因此浏览器 cookie 中的 ID 不再有用。

    我希望这对那里的人有所帮助。这个问题让我发疯了好几个小时,除了设置 sessionState 设置之外,我真的很惊讶关于这个问题的信息很少。

    祝你好运, G

    【讨论】:

    • 在寻找了几个月的解决方案之后,这就是最终帮助我的答案。具体来说,我不知道空闲超时。
    【解决方案3】:

    Romil 答案确实有效,我所做的只是更改应用程序的会话超时,而不更改空闲超时。现在按照他展示的方式从 20 分钟延长到 60 分钟后,它起作用了!

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2010-12-16
      • 2011-02-27
      • 2010-10-16
      • 2010-09-29
      • 2014-04-17
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      相关资源
      最近更新 更多