ASP.NET中的会话超时

时间:2009-03-16 01:50:48

标签: asp.net session timeout

我在IIS 6.0中运行ASP.NET 2.0应用程序。我希望会话超时为60分钟,而不是默认的20分钟。我做了以下

  1. 集 在web.config
  2. 在IIS管理器/网站属性/ ASP.NET配置设置中将会话超时设置为60分钟
  3. 在应用程序池属性/性能中将空闲超时设置为60分钟。
  4. 我仍然在20分钟时获得会话超时。还有什么我需要做的吗?

15 个答案:

答案 0 :(得分:266)

您使用的是表单身份验证吗?

表单身份验证使用自己的超时值(默认为30分钟)。表单身份验证超时会将用户发送到登录页面,会话仍处于活动状态。这可能看起来像你的应用程序在会话超时时提供的行为,使得容易将其中一个与另一个混淆。

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

将表单超时设置为小于会话超时的值可以为用户提供一个窗口,可以在其中重新登录而不会丢失任何会话数据。

答案 1 :(得分:38)

在web.config文件中使用以下代码块。 默认会话超时为80分钟。

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

使用以下链接进行会话超时和弹出警报消息。

Session Timeout Example

仅供参考:以上示例使用devexpress弹出控件完成,因此您需要使用正常的弹出控件自定义/替换devexpress弹出控件。如果您使用devexpress无需自定义

答案 2 :(得分:37)

我不知道web.config或IIS。 但我相信,从C#代码中你可以像

那样做
Session.Timeout = 60; // 60 is number of minutes

答案 3 :(得分:8)

这通常都是你需要做的......

你确定在20分钟后,会话丢失的原因是因为闲置......

有很多理由说明会议可能会被清除。您可以为IIS启用事件日志记录,然后可以使用事件查看器查看会话被清除的原因...您可能会发现这可能是出于其他原因?

您还可以阅读documentation for event messages和相关的table of events

答案 4 :(得分:8)

在我的情况下,它是应用程序池。它被设置为在空闲xx分钟时重新启动。当我将其设置为不重新启动时,它似乎使用来自Web Config的值。

答案 5 :(得分:7)

你在machine.config中有什么可能生效吗?在web.config中设置会话超时应覆盖IIS或machine.config中的任何设置,但是,如果应用程序的子文件夹中有某个web.config文件,则该设置将覆盖应用程序根目录中的设置。

另外,如果我没记错的话,IIS中的超时只会影响.asp页面,而不会影响.aspx。您确定web.config中的会话代码是否正确?它应该看起来像:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

答案 6 :(得分:3)

如果您使用身份验证,我建议在web.config文件中添加以下内容。

在我的情况下,用户在超时后被重定向到登录页面:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

答案 7 :(得分:3)

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>

<sessionState mode="InProc" timeout="60" />

答案 8 :(得分:2)

您可以在IIS中找到此设置:

Settings

可以在服务器级别,网站级别或应用级别下找到&#34; ASP&#34;。

我认为您可以在此处将其设置为web.config级别。请亲自确认一下。

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

答案 9 :(得分:1)

由于ASP.Net核心1.0(vNext或其他任何名称)会话的实现方式不同。 我使用:

更改了TraversableStartup.cs中的会话超时值
void ConfigureServices

或者如果您想使用services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42)); 文件,您可以执行以下操作:

appsettings.json

答案 10 :(得分:1)

IIS会话超时值仅适用于经典.asp应用程序,这是在IIS配置上控制的。 在您的情况下对于ASP.NET应用程序,仅适用于web.config指定的超时值。

答案 11 :(得分:0)

如果你想要网站的会话超时而不是删除

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>
来自web.config文件的

标记。

答案 12 :(得分:0)

默认会话超时在IIS中定义为20分钟

对于IIS 8.5网站上托管的每个网站,请遵循以下过程

IIS Timeout configuration

  

打开IIS 8.5管理器。

     

单击站点名称。

     

在“管理”部分下选择“配置编辑器”。

     

从配置顶部的“部分:”下拉列表中   编辑器中,找到“ system.web / sessionState”。

     

使用最小值将“超时”设置为“ 00:20:00或更小”   可能取决于应用程序。可接受的值为5   高价值应用需要10分钟,中价值应用需要10分钟   应用程序,低价值应用程序需要20分钟。

     

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

答案 13 :(得分:-1)

Timeout属性指定分配给应用程序的Session对象的超时时间(以分钟为单位)。如果用户在超时期限内未刷新或请求页面,则会话结束。

  

IIS 6.0:允许的最小值为1分钟,最大值为   1440分钟。

Session.Timeout = 600;

答案 14 :(得分:-2)

在IIS中更改会话超时值后,请重新启动IIS。 要实现此目的,请转到命令提示符。输入IISRESET并按Enter键。