Diagnosticando programaticamente a perda de sessão ASP.NET devido à reciclagem de aplicativos?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Temos um aplicativo ASP.NET 2.0 (VS2005) que funciona bem localmente, mas às vezes perde o estado da sessão quando implantado no servidor remoto.

Suspeito que um possível problema com o IIS recilizando o aplicativo e, assim, explodindo o estado da sessão dos usuários. No entanto, o servidor está remoto não sob nosso controle ... Portanto, não podemos simplesmente iniciar o IIS Admin e conferir as configurações do aplicativo. Outra causa possível, é claro, seria os clientes que rejeitam o cookie da sessão do ASP.NET por algum motivo.

(Nós descartamos um erro em nosso código porque é um aplicativo simples e nunca tenta remover algo do objeto de sessão, mas é claro ... essas são as últimas palavras famosas, hein?)

Como você diagnosticaria isso programaticamente?

Estou tentando descobrir como diagnosticar o problema; Se a reciclagem de aplicativos excessivamente zelosos for o culpado, não deve ser muito difícil de codificar.

Tenho certeza de que este é um problema comum para os desenvolvedores do ASP.NET.

Foi útil?

Solução

Aqui estão alguns links que podem ajudar na solução de problemas, se você puder alterar algumas configurações:

Processos trabalhadores de registro Eventos de reciclagem no IIS 6.0 (IIS 6.0)

Registrando eventos de desligamento do aplicativo ASP.NET

Outras dicas

Adicione algum código de registro ao método global.ASAX Application_Start e você poderá ver quando/se sua perda for causada por reinicializações de aplicativos (ou pelo menos, você verá quando o servidor está começando, se souber que uma sessão foi Perdido ao mesmo tempo, você conhece seu culpado).

Uma solução alternativa seria usar fora do Estado de sessão do Proc (provavelmente teria que ser baseado no SQL se você não tiver controle do servidor). É preciso um pouco de trabalho extra para o seu código, porque tudo o que você armazena em sessão deve ser serializável, mas resolve o problema de reinicializações de aplicativos, causando perda de sessão.

O IIS configurado para mais de um tópico de trabalhador (jardim da web) no pool de aplicativos pode causar perda do estado da sessão.

Encontrei um cenário em que a sessão é perdida - em uma página do ASP.NET, para um campo de caixa de texto, o campo tem caracteres inválidos e seguido por uma recuperação de variável de sessão para outros propósitos. Depois de postar o número inválido de análise através do convert.toint32 ou duplo Aumenta uma exceção de primeira chance, mas o erro não aparece nessa linha, em vez disso, a sessão sendo nula por causa da exceção não tratada, mostra erro na recuperação da sessão, enganando assim a depuração ...

Dica: teste seu sistema para falhar- destrutivo .. insira lixo suficiente em cenários não relacionados, você também seria capaz de reproduzir esta máquina na sua base de código local ... :)

Espero que ajude, Hydtechie

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