Usuário com melhor resposta
Session sumindo

Pergunta
-
Estou com problemas em relação aos usuários do sistema.
Quando logo na minha aplicação faço o seguinte:
/*Carregar o perfil do usuario*/ PerfilBo perfilbo = new PerfilBo(); perfil perfilmodel = new perfil(); perfilmodel = perfilbo.Find(n => n.id == user.id_perfil && n.status.Equals("A")).First<perfil>();
Session["permissao"] = perfilmodel;
salvo a a classe perfil em uma session, ai quando entro na página de vendas faço o seguinte teste:
if (!IsPostBack) { if (Session["permissao"] != null) { if (Session["permissao"] is perfil && ((perfil)Session["permissao"]).cad_venda.Equals("N")) { Response.Redirect("NaoPermitido.aspx"); } else { lblDataVenda.Visible = ((perfil)Session["permissao"]).alterar_dt_venda.Equals("S"); txtDataVenda.Visible = ((perfil)Session["permissao"]).alterar_dt_venda.Equals("S"); hlkImprimir.Visible = false; } } }
onde verifico se o usuário tem permissão para usar a session, o meu problema é, quando faço algumas movimentações no meu sistema tipo: vendo, consulto, cadastro entre outros...estes meus testes não são mais válidos, como se a session tivesse sumido, olho nas configurações do navegador e não encontro mais nada, como faço para resolver esse problema?
Desde já agradeço.
Respostas
-
a solução que encontrei foi que toda vez que entrar na pagina vou fazer essa verificação dentro do banco de dados, sei que ira ficar mais lenta mas foi a única que encontrei.
- Marcado como Resposta Harley Araujo quinta-feira, 2 de agosto de 2012 14:08
Todas as Respostas
-
Olá Thiago, tudo bem?
Nesse meio tempo que você estava testando, você chegou a atualizar o sistema? Pois caso esteja, a sessão poderá estar sendo reiniciada.
Ao debugar, já verificou como está a sessão, se está nula ou não?
Atenciosamente,
Raphael A. F. Cardoso
Blog: www.csharpbrasil.com.br
Twitter: @csharpbrasil / @ferronicardoso
“Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo” (Albert Einstein) -
Quando vou debugando fica tudo normal faz todas essas validações, isso acontece sem ser debugando e depois de certo tempo de movimentação com o servidor, eu consegui simular isso quando efetuo um monte de build ai atualizo minha página e os teste se tornam inválidos pois a session sumiu.
-
Cara da uma olhada nesse artigo, acho que pode ajuda:
-
-
Tenta coloca esse carinha no WebConfig
Web.Config<?xml version="1.0"?> <configuration> <system.web> <sessionState timeout="60" /> </system.web>
- Editado Lennon Pereira (MCTS) sexta-feira, 6 de julho de 2012 11:57
-
-
Thiago,
Se você gera novas builds(compila o projeto) o sistema vai zerar a SESSION mesmo, isso é normal. Se você acessa uma página e grava uma SESSION e continua navegando tudo bonitinho ela vai ficar lá, mas se você por alguma motivo envia a DLL novamente para o servidor ou compila o projeto, ele nota que houve um alteração e vai matar todas as SESSIONS no próximo acesso por segurança.
Uma dica...procure não utilizar Session["NOME"] = VALOR tente utilizar Session.Add("NOME", VALOR); por incrível que pareça essa segunda é melhor, não sei por que!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
-
Thiago,
Como o Lennon disse a uns posts atrás, você pode tentar controlar esse tempo pelo web.config, mas como eu disse...se você faz uma atualização do servidor ele vai zerar a SESSION. Não adianta você armazenar uma informação na SESSION e deixar ela parada lá sem fazer nada pois o SERVER vai remover isso por que custa memória. Você pode armazenar a SESSION no MSSQL dessa forma você não teria esse problema, mais sobre esse assunto em:
- http://support.microsoft.com/kb/317604
- http://www.dirigodev.com/blog/storing-aspnet-session-state-in-sql-server/
- http://www.codeproject.com/Articles/41726/Peer-to-Peer-ASP-NET-State-Server
Espero ter ajudado...boa sorte!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
Teria alguma outra forma de armazenar essa classe com os valores do perfil?
Lembrando que uso o banco de dados mysql.
- Editado Thiago_Porto sexta-feira, 6 de julho de 2012 17:19
-
-
-
a solução que encontrei foi que toda vez que entrar na pagina vou fazer essa verificação dentro do banco de dados, sei que ira ficar mais lenta mas foi a única que encontrei.
- Marcado como Resposta Harley Araujo quinta-feira, 2 de agosto de 2012 14:08