3

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

网络配置:

 <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>
4

3 回答 3

6

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

使用 web.config

    <sessionState timeout="minutes"/> 

使用 IIS

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

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

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

在此处输入图像描述

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

  2. 在 Idle timeout 下的 Performance 选项卡中,将 Shutdown worker processes after idle 设置为大于 20 的值。

在此处输入图像描述

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

于 2012-05-14T09:04:39.617 回答
5

我最近一直在为这个问题而苦苦挣扎。似乎有很多地方可以设置超时,但你的超时只会与设置最短的属性一样长。以下是我发现的一些事情......

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

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

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

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

祝你好运,G

于 2012-07-25T17:41:20.023 回答
0

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

于 2012-05-15T01:39:15.293 回答