Tempo-limite da sessão em ASP.NET

estou a gerir um ASP.NET aplicação 2.0 no IIS 6.0. Quero que o tempo limite da sessão seja de 60 minutos, em vez dos 20 minutos predefinidos. Eu fiz o seguinte

  1. conjunto na web.config
  2. Definir o tempo-limite da sessão para 60 minutos no gestor do IIS / propriedades do sítio Web / configuração do ASP.NET
  3. Ajustar o tempo-limite de inactividade para 60 minutos nas propriedades/desempenho do conjunto de aplicações.
Ainda tenho um intervalo de sessão daqui a 20 minutos. Há mais alguma coisa? precisas de fazer?

Author: Brian Webster, 2009-03-16

14 answers

Está a usar a autenticação dos formulários?

A autenticação dos formulários usa o seu próprio valor para o tempo-limite (30 minutos. por padrão). Um tempo-limite de autenticação dos formulários irá enviar o utilizador para a página de autenticação com a sessão ainda activa. Isto pode parecer como o comportamento que o seu aplicativo dá quando horas de sessão para fora, tornando fácil de confundir um com o outro.

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

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

Se configurar o tempo-limite dos formulários para algo menos do que o tempo-limite da sessão, poderá dar ao Utilizador uma janela na qual se poderá fazer o login sem a perder os dados de qualquer sessão.

 259
Author: HectorMac, 2009-03-16 12:04:39

Use o seguinte bloco de código na sua web.ficheiro de configuração. Aqui o tempo de sessão por omissão é de 80 minutos.

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

Use a seguinte ligação para o tempo-limite da sessão com a mensagem de alerta instantâneo.

Exemplo De Tempo-Limite Da Sessão

FYI: os exemplos acima são feitos com o controlo de PopUp devexpress, por isso precisa de personalizar/substituir o controlo de popup devexpress com o controlo normal de popup. Se estiver a utilizar devexpress não há necessidade de personalizar

 36
Author: Rama Subba Reddy M, 2015-03-20 15:08:47
Quanto à web, não sei.config ou IIS. Mas eu acredito que do Código C# você pode fazê-lo como
Session.Timeout = 60; // 60 is number of minutes
 34
Author: Dmitris, 2017-11-14 15:22:25
Isso é normalmente tudo o que precisas de fazer... Tens a certeza que depois de 20 minutos, a razão pela qual a sessão está a ser perdida é por estar ociosa?.. Há muitas razões para que a sessão possa ser limpa. Você pode activar o registo de eventos para o IIS e pode então usar o visualizador de eventos para ver as razões pelas quais a sessão foi limpa...pode achar que é por outras razões, talvez?

Também pode ler a documentação para as mensagens de Eventos e the associated table of events .

 8
Author: davidsleeps, 2015-07-04 19:03:41
Tens alguma coisa na máquina?uma configuração que pode estar a fazer efeito? A definir o tempo-limite da sessão na web.a configuração deve sobrepor - se a qualquer configuração no IIS ou na máquina.config, no entanto, se você tem uma web.ficheiro de configuração algures numa subpasta da sua aplicação, essa opção irá sobrepor a que está na raiz da sua aplicação. Além disso, se bem me lembro, o tempo limite no IIS só afecta .páginas asp, não .aspx. Tem a certeza que o seu código de sessão está na web?config está correcto? Deveria parece algo do género:
<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"
/>
 7
Author: Cᴏʀʏ, 2009-03-16 03:20:23
Na minha situação, era um grupo de aplicações. Está programado para reiniciar quando estiver inactivo durante xx minutos. Quando o configuro para não reiniciar, parece usar o valor da Configuração Web.
 7
Author: lyords, 2013-10-23 11:01:17

Se está a usar a autenticação, recomendo adicionar o seguinte na web.ficheiro de configuração.

No meu caso, os utilizadores são redireccionados para a página de login ao cronometrar:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>
 3
Author: amar beeharry panray, 2015-12-02 14:35:46

Você pode encontrar a configuração aqui em IIS:

Settings

Ele pode ser encontrado no nível do servidor, nível do site, ou nível do aplicativo sob "ASP".

Acho que podes pô-lo na internet.nível de configuração aqui. Por favor, confirme isto.
<configuration>
   <system.web>

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

   </system.web>
</configuration>
 2
Author: Melbourne Developer, 2017-02-22 23:33:40

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" />
 2
Author: Paulo Tolentino, 2017-05-29 20:55:47

O valor de tempo-limite das sessões é para o clássico .apenas aplicações asp, isto é controlado na configuração IIS. no seu caso para ASP.NET apps, só a web.aplica-se o valor de tempo-limite indicado pela configuração.

 1
Author: Crying Freeman, 2017-01-26 19:28:08

Se você quer tempo-limite de sessão para o site do que remover

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

Etiqueta da web.ficheiro de configuração.

 0
Author: Nayan Hodar, 2016-02-29 13:09:24

Desde ASP.Net as sessões core 1.0 (vNext ou seja qual for o nome usado para ele) são implementadas de forma diferente. Alterei o valor-limite da sessão em Startup.cs, void ConfigureServices Utilizar:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

Ou se quiser usar o ficheiro appsettings.json, pode fazer algo do género:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));
 0
Author: Matty, 2016-05-26 08:38:25

A propriedade Tempo-Limite indica o período de tempo atribuído ao objecto de sessão para a aplicação, em minutos. Se o Usuário não atualizar ou solicitar uma página dentro do período de tempo, a sessão termina.

IIS 6.0: o valor mínimo permitido é 1 minuto e o máximo é 1440 minutos.

Session.Timeout = 600;
 -1
Author: Muhammad Awais, 2016-09-18 13:26:41

Depois de alterar o valor-limite da sessão no IIS, reinicie por favor o IIS. Para conseguir isso vá para o comando prompt. Escreva IISRESET e carregue em enter.

 -2
Author: Varun R, 2010-12-08 05:53:06