SESSÃO ASP.NET
Olá, pessoal
Procurei no google meio que por cima! Mas resolvi postar aqui, vai que existe mais pessoas que estão com o mesmo problema que o meu.
Seguinte, tenho uma aplicação web form em C# - ASP.NET. Essa aplicação é totalmente trabalhada em camadas.
O sistema funciona normalmente, mas o meu maior problema é que todas as vezes que preciso fazer alguma alteração e testar a página erde a sessão e volta ao zero.
Exemplo:
Fiz um login Session.Add([Ô]Login[Ô], true) e redireciona para página restrita!
Nessa página restrita com o projeto startado eu preciso mudar o HTML, somente o HTML. Tipo (<p>Teste 1</p>) para (<p>Teste</p>)
Só de fazer isso e salvar o HTML e pressionar F5 na página o sistema zera todas as sessões e apresenta erro na página.
O erro ocasiona devido a captura do valor da sessão assim Dim login As Boolean = Convert.ToBoolean(Session([Ô]Login[Ô])) e como a sessão não existe mais. ERRO
Alguém já passou por isso?
Pois isso não acontecia quando o projto era pequeno, mas agora está acontecendo!
Agradeço a todos os que puderem contribuir!
Procurei no google meio que por cima! Mas resolvi postar aqui, vai que existe mais pessoas que estão com o mesmo problema que o meu.
Seguinte, tenho uma aplicação web form em C# - ASP.NET. Essa aplicação é totalmente trabalhada em camadas.
O sistema funciona normalmente, mas o meu maior problema é que todas as vezes que preciso fazer alguma alteração e testar a página erde a sessão e volta ao zero.
Exemplo:
Fiz um login Session.Add([Ô]Login[Ô], true) e redireciona para página restrita!
Nessa página restrita com o projeto startado eu preciso mudar o HTML, somente o HTML. Tipo (<p>Teste 1</p>) para (<p>Teste</p>)
Só de fazer isso e salvar o HTML e pressionar F5 na página o sistema zera todas as sessões e apresenta erro na página.
O erro ocasiona devido a captura do valor da sessão assim Dim login As Boolean = Convert.ToBoolean(Session([Ô]Login[Ô])) e como a sessão não existe mais. ERRO
Alguém já passou por isso?
Pois isso não acontecia quando o projto era pequeno, mas agora está acontecendo!
Agradeço a todos os que puderem contribuir!
Eu já sofri bastante com isso, migrei pra cookie. Como o cookie fica no cliente utilize uma rotina de criptografia antes de salvar... Outra solução é configurar as sessions pra ficar no sqlserver, mas dependendo do tamanho do projeto nem compensa.
Obrigado pela dica amigo, mas o projeto é muito grande! Mais ou menos uns 600mb
Alguém mais tem alguma sugestão?
Alguém mais tem alguma sugestão?
Não tem muito o que fazer, se a session usada é a padrão (geralmente InProc), ela fica na memória do seu programa, e sempre que se faz alguma modificação no programa ele é reiniciado, perdendo os valores que estão na session
Alternativas que talvez funcionem seria mudar o tipo de session para usar o StateServer, porém só é possÃvel se o local da hospedagem der suporte a ele, pois geralmente o serviço responsável por isso vem desativado, e a outra seria usar o SQL Server para salvar a sessão, que necessita de uma certa estrutura de tabelas no banco de dados.
Destas duas formas você continua usando a Session normalmente como já faz, porém existe uma limitação, qualquer objeto que você for adicionar na Session que não seja um tipo básico precisa ser Serializable, se tudo que usa forem tipos básicos (string, bool, int, etc) não tem problema algum, tudo que muda é uma configuração no Web.config
E se o problema for só no desenvolvimento então você poderia fazer esta configuração só no seu PC e deixar em produção com a configuração padrão mesmo, eu diria para neste caso testar com o StateServer.
Você pode conferir informações sobre isso aqui: https://msdn.microsoft.com/en-us/library/ms178586%28v=vs.140%29.aspx
Alternativas que talvez funcionem seria mudar o tipo de session para usar o StateServer, porém só é possÃvel se o local da hospedagem der suporte a ele, pois geralmente o serviço responsável por isso vem desativado, e a outra seria usar o SQL Server para salvar a sessão, que necessita de uma certa estrutura de tabelas no banco de dados.
Destas duas formas você continua usando a Session normalmente como já faz, porém existe uma limitação, qualquer objeto que você for adicionar na Session que não seja um tipo básico precisa ser Serializable, se tudo que usa forem tipos básicos (string, bool, int, etc) não tem problema algum, tudo que muda é uma configuração no Web.config
E se o problema for só no desenvolvimento então você poderia fazer esta configuração só no seu PC e deixar em produção com a configuração padrão mesmo, eu diria para neste caso testar com o StateServer.
Você pode conferir informações sobre isso aqui: https://msdn.microsoft.com/en-us/library/ms178586%28v=vs.140%29.aspx
A sua dificuldade é a mesma de muitos outros, isso devido ao modo que Sessions funciona. é meio confuso e nada confiável. Só tive solução definitiva quando deixei de usar sessions para sistema de login baseado em token.
é muito complicado essa minha situação, pois eu não dou stop no projeto! Com ele rodando altero sometne o HTML e salvo e já perde a session!
Utilizar o SQL Server não vai adiantar pra mim, pois utilizo o banco de dados Oracle 11g.
KERPLUNK, como seria essa téquinica de token, nunca utilizei.
Utilizar o SQL Server não vai adiantar pra mim, pois utilizo o banco de dados Oracle 11g.
KERPLUNK, como seria essa téquinica de token, nunca utilizei.
FILMAN, tenho que confessar que não é simples e muda muita coisa no seu projeto, mas é a única solução que REALMENTE funciona. Comece por este artigo
Tópico encerrado , respostas não são mais permitidas