Buscar

Últimas inserções

Gerando planilhas XLS para Excel com formatação de colunas
MD5 direto no Sql Server
Aplicação demora muito para inicializar quando VisualStudio está "Loading Symbols"
Fazendo Painel de Leds em menos usando System.Drawing(parte 3)
Fazendo Painel de Leds em menos usando System.Drawing(parte 2)
- TODAS AS DICAS

Top Poggers (sempre)

Jar Jar Binks (136)
Cuban Pete (127)
Tufo (28)

Top Poggers (30 dias)


Área restrita

Logon

pogMasters.NET

Início
Busca Avançada
Contato

RSS
 

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 >>
Nome  
Email
Comentário    
Postar Comentário