ASP.NET porque é que as sessões estão a marcar o tempo-limite da sessão?

Tenho a seguinte linha na minha web.config

<sessionState mode="InProc" timeout="45"/>
Que pensei que manteria as sessões intactas durante 45 minutos.

mas já vi o caso em que, se um utilizador estiver inactivo, digamos 15 minutos, as sessões param.

Como posso parar isto ?

Editar: acabei de reparar que tenho a seguinte linha na página principal

Meta http-equiv="Refresh" content="1800;URL=http://www.virtualacademy.ie/login.aspx">

Talvez isto esteja a causar o problema, o quê? a linha acima indica o número 1800

Author: StevieB, 2011-05-06

4 answers

Se o utilizador fechar o seu navegador ou limpar os 'cookies', ou se o 'AppDomain' no servidor for reciclado, o estado de sessão será perdido.

Já verificou os registos para ver se a aplicação está a reciclar?
 5
Author: Andrew Barber, 2011-05-06 14:35:01

Certifique-se de verificar a sua configuração do IIS porque o conjunto de aplicações em que o seu site está hospedado também tem o seu próprio valor de tempo-limite que irá sobrepor o seu próprio .configuracao.

Para aumentar,

  1. Abrir IIS
  2. Seleccione os grupos de Aplicação do lado esquerdo
  3. Seleccione o conjunto de Aplicações usado pelo seu site
  4. Escolha a configuração avançada
  5. sob a categoria de modelo de Processo aumentar o valor de "tempo inactivo" para o comprimento desejado.
Espero que isto ajuda.

(Se não tiver um servidor dedicado / acesso aos IIS com o seu fornecedor de hospedagem, terá de Os contactar para ver se o podem aumentar para si) {[[2]}

 16
Author: Despertar, 2012-02-02 05:36:12

A reciclagem de AppDomain é um problema muito comum para este caso se o sessionState for InProc. É muito aconselhável utilizar um StateServer ou SQLServer para sistemas de produção. Veja Os modos sessão-Estado para documentação sobre como usar cada um, e os prós e contras dos três tipos diferentes.

Pessoalmente, nós usamos o servidor SQL se for necessário para fazendas de servidores web -- mais lentos, mas podem ser compartilhados. Usamos o State Server se o site só estiver hospedado em um único servidor web -- state survives AppDomain reiniciar, mas não reiniciar o servidor inteiro.

Também, no passado, usamos um post AJAX em segundo plano, enquanto o usuário está assistindo vídeos de longa duração ou executando tarefas longas do lado do cliente, de modo que o tempo limite da sessão é reiniciado a cada poucos minutos. Não há nada de especial neste código. basta ter um pouco de JavaScript a cada alguns minutos uma página ASPX que não devolve nada.

 5
Author: Jon Adams, 2011-05-06 15:03:44

Está a usar a autenticação dos formulários? Ele tem seu próprio tempo-limite que quando expirar irá redirecionar o Usuário para a sua página de login, mesmo que sua sessão ainda seja válida.

 0
Author: CheckRaise, 2011-05-06 14:34:48