Apagar Sub-diretórios Faz a WebApplication perder a Sessão
ASP.NET
09/04/2009 por
Tufo
-------------------------------------
O PROBLEMA
-------------------------------------
Primeiro vamos entender a lógica do problema.
Ao iniciar a aplicação, AppDomains são inicializados.
Um AppDomain serve para principalmente rodar assemblies (um genérico web do nosso conhecido rundll32 no windows) e para tratar certos eventos.
quando vc roda um aplicativo web .NET, os AppDomains são criados:
System Domain
Shared Domain
Default Domain
Root
Aplicacao1
Aplicacao2
AplicacaoN
É função do AppDomain também controlar a tabela de diretórios e arquivos que pertencem ao projeto, e é ai que chega nosso problema.
Antes da versão 2.0 do .Net, ao apagar (e apenas apagar, criar não causa esse problema), a exclusão da pasta era feita normalmente, porém os AppDomains não eram atualizados, permitindo que você tentasse acessar uma pasta que não existia mais, mas o AppDomain referente aquela pasta ainda dizia ela existir.
Como a Microsoft resolveu isso?
Toda vez que uma pasta é excluída, recarrega todos AppDomains! perfeito!
Seria perfeito se simplesmente A SESSION não fosse pro saco junto!!! apenas isso, apenas a session!!!
-------------------------------------
A SOLUÇÃO
-------------------------------------
quem disse que tem solução?
(deve ter, mas ainda não consegui encontrá-la, quando voltar no ticket referente isso, eu atualizo o post)
edit 09/04/2008 12:27 abaixo:
Encontrei o causador do problema, a session é por default armazenada na memória compartilhada da aplicação, ou seja, junto com os appDomains, quando eles são reinicializados, a session que estava junto com eles, some.
Mude a forma que a session é armazenada para ServerState ou SQLServer, veja como em:
http://tinyurl.com/dncgl4
Comentários sobre o artigo
Poste um comentário >>
|