/ / Perder a sessão ASP.NET para uma solicitação e, em seguida, recuperá-la na próxima - asp.net, sessão, cookies

Perder a sessão do ASP.NET para uma solicitação e depois recuperá-la na próxima - asp.net, sessão, cookies

Estou vendo um problema muito estranho em um dos meuscaixas de produção. Temos um aplicativo hospedado no IIS 6 em uma única máquina com um servidor web apache na frente dele. Meu aplicativo está usando a associação ASP.NET para autenticação e depende do estado da sessão. Estou vendo um problema agora em que algumas solicitações de servidor atingirão uma exceção nula ao tentar acessar qualquer variável de sessão, mas se a solicitação for repetida, a página não atinge exceções e se comporta corretamente.

Eu acredito que isso tem algo a ver com oO cookie de ID de sessão está sendo corrompido ou perdido na solicitação, mas não tenho ideia do que pode causar isso. Acredito nisso porque parece que o ASP.NET não está vendo o cookie e criando uma nova sessão, o que explicaria por que as variáveis ​​são nulas. Quando ele obtém a exceção, ele não pode gravar o novo cookie SessionID de volta para o cliente, então o cliente ainda mantém o SessionID original. Então, quando a próxima solicitação é enviada, o cookie SessionID original é usado, que agora o ASP.NET encontra e é capaz de recuperar o estado da sessão. Isso é pura especulação, mas parece se adequar aos sintomas.

Além disso, este site não está usando outros cookiesem seguida, aqueles exigidos pela associação ASP.NET e sessão ASP.NET, portanto, estou bem abaixo do limite de cookies para o IE. O site está funcionando corretamente há cerca de 8 meses e esse problema surgiu recentemente. Eu tentei redefinições do IIS e realmente reinicializar a máquina, mas nada pareceu ajudar o problema.

Atualizações:

Aqui estão alguns esclarecimentos que foram solicitados.

1) Nosso servidor Apache é a única coisa exposta na Internet. Todas as solicitações ocorrem por HTTPS para esta caixa. A caixa do Apache então encaminha todas as solicitações além do HTTP para nosso servidor de aplicativos. Isso está sendo feito por razões de segurança. Procuramos ver se o Apache pode ter sido o problema, mas parece não haver nenhum erro nos logs do Apache.

2) A exceção nula está ocorrendo ao tentar acessar um objeto armazenado na sessão que o aplicativo espera que esteja lá, em oposição à exceção que ocorre com o próprio objeto de sessão real.

Respostas:

0 para resposta № 1

Encontramos a raiz do problema.Parece que a meta-base do IIS foi corrompida em nosso servidor de aplicativos. A melhor maneira de corrigir esse problema é fazer uma instalação limpa do IIS, mas, devido às restrições de negócios, essa não é uma opção para nós. Portanto, outra solução é realmente apenas criar um novo App Pool para o aplicativo ser executado. De acordo com algumas pessoas com mais experiência em IIS do que eu, isso resolverá o problema em curto prazo, mas é muito provável que a mesma coisa aconteça com este pool de aplicativos. Portanto, somos obrigados a criar novos pools de aplicativos se isso começar a ocorrer novamente.