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
- conjunto na web.config
- Definir o tempo-limite da sessão para 60 minutos no gestor do IIS / propriedades do sítio Web / configuração do ASP.NET
- Ajustar o tempo-limite de inactividade para 60 minutos nas propriedades/desempenho do conjunto de aplicações.
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.
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
Session.Timeout = 60; // 60 is number of minutes
Também pode ler a documentação para as mensagens de Eventos e the associated table of events .
<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"
/>
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>
Você pode encontrar a configuração aqui em IIS:
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>
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" />
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.
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.
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"]));
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;
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.