Quando o processo de trabalho falha e é reciclado, todas as sessões também se perdem. Você checou seu eventlog por algo estranho?
Temos um site ASP.Net 3.5 em execução no Windows Server 2008 com o IIS7. O período de tempo limite da sessão para este site está configurado para 20 minutos - no entanto, ele está atualmente com duração entre 40 e 50 segundos. Depois de pesquisar o problema, investigamos vários valores de configuração que poderiam estar envolvidos no período de tempo limite, mas nenhum deles foi configurado para menos de 20 minutos. As áreas que olhamos são as seguintes:
Também notamos que a CPU está ficando em torno de 0% e que o uso de RAM é de cerca de 1,07 GB (de 8 GB disponíveis) - portanto, não há motivo de desempenho para o IIS estar reciclando o pool de aplicativos até onde podemos dizer.
Há alguma configuração que tenhamos ignorado e que poderia causar o tempo limite de expiração da sessão tão rapidamente?
EDITAR
Alguns pontos adicionais:
Pode ser substituído no código. Session.Timeout = nn minutos.
O aplicativo ASP.NET também pode ter algum código para fins de segurança para expirar e abandonar as sessões. Isso é feito com Session.Abandon (). Você pode querer validar que a sessão não está sendo removida no aplicativo. Espero que o aplicativo tenha algum tipo de registro no código de autenticação que ajudaria a revelar a atividade da sessão.
A expiração da sessão também está sendo exibida. Então, se você se conecta frequentemente ao site a cada poucos segundos, ele realmente não deve expirar. Se assim for, algo é definitivamente levantado.