ASP.NET porque é que as sessões estão a marcar o tempo-limite da sessão?
<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 18004 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?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,
- Abrir IIS
- Seleccione os grupos de Aplicação do lado esquerdo
- Seleccione o conjunto de Aplicações usado pelo seu site
- Escolha a configuração avançada
- sob a categoria de modelo de Processo aumentar o valor de "tempo inactivo" para o comprimento desejado.
(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]}
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.
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.