C # .NET como configurar o tempo da sessão para 6 horas com autenticação de formulários?

StackOverflow https://stackoverflow.com/questions/2019345

  •  19-09-2019
  •  | 
  •  

Pergunta

Na minha aplicação eu usar autenticação de formulários e sessões. Como posso tomar cuidado para que o usuário está conectado para fora após um período de 6 horas?

Na minha web.config eu definir a sessões de tempo limite para 360 minutos. Mas depois de um período de 10 minutos de inatividade I precisa se logar novamente.

Eu também definir o meu tempo limite de autenticação de formulários para 360 minutos. O que é que eu estou fazendo errado?

Foi útil?

Solução

Existem alguns outros valores de tempo limite que afetarão o tempo de sessão fora. Um deles que vem a minha mente é trabalhador Processo Timeout (que é definido a partir do IIS). out padrão do processo de trabalho é de 20 minutos, por isso, se não há atividade em seu site por 20 minutos o processo de trabalho terminará e causando a sua sessão ao fim se você estiver usando sessão no modo InProc. Assim valor de tempo limite recebendo do processo de trabalho para 360 minutos é o que você pode precisar também.

Outras dicas

tentar essa configuração:

algumas coisas para verificar também:

  • Se o seu FormsAuthenticationTicket é criado com um valor menor tempo limite do cookie, que poderiam substituir

  • Se o pool de aplicativos "processos de trabalho de desligamento" intervalo é menor, que repor o estado anterior

Em vez de definir um tempo limite da sessão, você pode implementar um mecanismo para manter a sessão viva, por exemplo:. Atualizar a página ou fazer uma chamada de ajax etc

Você pode adicionar a este através da implementação de um tempo máximo de login, que podem ser verificados etc

Você precisa ajustar tempo limite e slidingExpiration :

<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>

Instruções passo a passo Configurar o Processo de Trabalho ocioso Página-out para um pool de aplicativos Individual 1.Open Gerenciador do IIS.

2.Selecionar Aplicações Pools no painel Conexões, selecione um pool de aplicativos no painel de pool de aplicativos e clique em Configurações Avançadas ... no painel Ações.

caixa 3.Em as Configurações avançadas de diálogo, sob Modelo de Processo, desejar, defina o valor de tempo limite de espera do padrão de 20 minutos para um período de tempo diferente.

4.Click OK.

Você está usando InProc Sessions? (Esse é o padrão em ASP.net AFAIK) Nesse caso, verifique se o seu pool de aplicativos recicla, como isso vai matar todas as sessões. Eu não tenho um IIS para verificar, mas eu acredito que ele está configurado para encerrar um pool de aplicativos se está inactivo durante um determinado tempo - se este é o seu servidor de desenvolvimento, talvez você tenha sido inativo por muito tempo para que os recicla apppool e seu InProc Sessions são mortos?

Eu não tenho certeza como é fácil de implementar StateServer ou SQLServer, em vez de InProc rapidamente, mas aqui é o MSDN Página sobre estado da sessão .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top