Pergunta

Eu tenho um problema com uma aplicação ASP.NET que está me deixando louco.

Quando um usuário deixa um inativo página por um período de tempo que a sessão foi o tempo limite e erro foram sendo lançados devido a variáveis ??de sessão não ser resolvido (I será erro armadilha isso de qualquer maneira, mas este não é o problema). Eu codificado um 'defribulator', que irá realizar uma nova postagem invisível após a metade do tempo limite da sessão expirou e isso parecia funcionar bem - deixando o pedido de 30 minutos não causou um erro mesmo que o tempo limite da sessão foi marcada para 20 minutos. No entanto, esta manhã do outro Devs experimentou um tempo limite? - Como isso é possível

Em uma investigação mais aprofundada Eu acho que o problema ocorre quando as formas de autenticação tempo limite for excedido - embora o defribulator foi (aparentemente) manter a sessão viva. Eu li que a permissão de autenticação só será reeditado se um postback ocorre após metade do período de tempo limite especificado tenha elepsed e isso não pode a questão como o defrib vai emitiram pedidos durante a segunda metade do período de tempo limite - então por que era não reeditado?

Acho que eu poderia contornar o problema, definindo o tempo limite de autenticação para 8 horas ou assim, mas que é uma solução pobre.

Alguém pode lançar alguma luz sobre isso?

Agradecemos antecipadamente

[Edit 24/11/2008] Revendo os arquivos de log provou iluminando e confundindo. Eu posso ver o disparo defribulator após 10 minutos de inatividade, mas enquanto o SESSION_ID parece ser consitent todo, as formas autenticações mudanças ID bilhete - não tenho certeza se ele é suposto ou não. Estou formulando um plano de teste e agora vai enviar de volta quando eu tiver concluído-los. Obrigado a todos que fizeram comentários até agora.

[Edit 24/11/2008] Bem, eu estou perplexo - Ouvia parece estar funcionando muito bem neste momento! O bilhete de autenticação está sendo regenerado, quando as pistas defrib (as mudanças ID) e a sessão está sendo mantida. Era um problema de servidor - não posso dizer. Eu tenho tido esse problema antes e nunca chegou ao fundo da questão e é muito frustrante - certamente não deve ser tão difícil. Vou ter que deixar essa queda para a timebeing como eu tenho que começar com alguns outros aspectos da aplicação. Eu só vou ter que código de contornar este problema -. O que nunca pode ocorrer no local do cliente

Obrigado novamente para a entrada everyones -. Se eu fazer qualquer progresso que vão colocá-la de volta aqui

Foi útil?

Solução

Isso também pode acontecer quando o IIS recicla ou termina o pool de aplicativos.

Você pode querer verificar Solucionar problemas Autenticação de Formulários Pode ser que o cliente perdeu seu cookie .

Se você gerar manualmente a permissão de autenticação, você precisa definir o tempo limite em código e não o web.config

Outras dicas

Não quero dizer o óbvio, mas:

  1. Os limites de tempo de sessão e FormsAuthentication definidos para o mesmo valor?
  2. está definido slidingExpiration para true?

Você verificou contra um pool de aplicativos ou processo de trabalho reciclagem causando o problema?

Obrigado pelas caras de resposta: Já definir explicitamente slidingExpiration como true no web.config sem efeito.

Os valores de tempo limite são: Sessão: 20 minutos FormsAuthentication: 60 minutos

Eu deixei o tempo limite da sessão como está e reduziu o FormsAuthentication para 12 minutos para testar. Os defrib 'pings' a cada 10 minutos. Se eu deixar o inativo página por 14 minutos e, em seguida, clicar em um botão eu recebo o #edit problema: mas não toda vez que parece #

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