SESSÃO ASP.NET

FILMAN 06/05/2015 23:46:30
#446440
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!
MILTONFILHO 08/05/2015 00:22:39
#446474
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.
FILMAN 21/05/2015 23:21:30
#446877
Obrigado pela dica amigo, mas o projeto é muito grande! Mais ou menos uns 600mb

Alguém mais tem alguma sugestão?
OCELOT 22/05/2015 10:51:56
#446922
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
KERPLUNK 22/05/2015 15:19:46
#446931
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.
FILMAN 22/05/2015 22:50:54
#446943
é 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.
KERPLUNK 23/05/2015 16:09:13
#446949
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