如何在asp.net中停止20分钟后暂停会话超时?

时间:2012-05-14 09:01:07

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

我正在使用iis6来部署我的应用程序。无论我如何更改iis配置中的超时或我添加一个global.asax文件来设置Session.Timeout,甚至使用会话状态,我仍然在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>

3 个答案:

答案 0 :(得分:5)

将此内容包含在您的web.config文件中:

使用web.config

    <sessionState timeout="minutes"/> 

使用IIS

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

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

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

  3. enter image description here

    1. 选择应用程序池&gt; DefaultAppPool&gt;属性。

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

    3. enter image description here

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

答案 1 :(得分:4)

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

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

  • 如果您正在实施Forms身份验证,那么web.config文件中还会定义一个额外的超时设置。寻找... system.web&gt;身份验证&gt;在web.config中创建节点,并将“超时”属性修改为所需的分钟数。

  • 这是我忽略的那个......在IIS中(肯定是7.5版,可能更早,但我无法确认)右键单击相关的应用程序池并选择“高级设置”。在“流程模型”标题下(如果需要,展开),查找“空闲超时(分钟)”设置。将其设置为所需的超时(分钟)。 - 说明: sessionState&gt;超时设置会影响将会话ID存储在浏览器中的cookie过期,超时实际上决定何时应关闭工作进程(尚未使用)。一旦流程关闭,它就不再回忆现有的会话ID,因此浏览器cookie中的ID不再有用。

我希望这对那里的人有帮助。这个问题让我疯狂了几个小时,除了设置sessionState设置之外,我对这方面的信息很少感到惊讶。

祝你好运, ģ

答案 2 :(得分:0)

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