diogom Posted June 27, 2012 at 09:08 AM Report #465841 Posted June 27, 2012 at 09:08 AM (edited) Olá, Tenho uma página para fazer o login, onde crio uma session. Session["nome"] = userTB.Text; Response.Redirect("xxx.aspx"); Recebo essa session numa outra página. userTB.Text = Session["nome"].ToString().Trim(); if (String.IsNullOrEmpty(Session["nome"].ToString().Trim())) { Response.Write("<script language=\"javascript\">alert('Utilizador não identificado ou sessão expirada. Por favor, identifique-se no sistema');self.location.href='http://xxxx.com.pt/xxxx.aspx';</script>"); return; } else { //if (Session["nome"].ToString() != null && Session["nome"].ToString() != "") //{ if (!IsPostBack) { if (userTB.Text.Contains("@")) { // Declare the query string. String queryString = O problema é, que as sessions tem um tempo de experição e quando esse tempo acaba e faço refresh, surge este erro Object reference not set to an instance of an object. . O que quero é, fazer uma condição para quando a session ficar a null, retornar para a página de login. Cmp Edited June 27, 2012 at 09:43 AM by Caça GeShi
petvetbr Posted June 27, 2012 at 11:22 AM Report #465903 Posted June 27, 2012 at 11:22 AM (edited) Primeiro verifique se a Session["nome"]== null Se for faça. Um response.redirect para a página de logon. Edited June 27, 2012 at 11:23 AM by petvetbr Fernando Lage Bastos - MCP/MCTS/MCPD
diogom Posted June 27, 2012 at 11:30 AM Author Report #465908 Posted June 27, 2012 at 11:30 AM Primeiro verifique se a Session["nome"]== null Se for faça. Um response.redirect para a página de logon. Isso já está feito. Eu tenho isto a funcar bem, o problema é que ao final de um tempo, a sesson expira e quando faço refresh ou outra coisa qualquer, dá-me este erro: Object reference not set to an instance of an object.
poliveira1978 Posted June 27, 2012 at 01:58 PM Report #465934 Posted June 27, 2012 at 01:58 PM uma coisa deste género: if (HttpContext.Current.Session!= null) { HttpContext.Current.Session["nome"]="qualquer coisa"; } else { // redirect para a página de login }
diogom Posted June 27, 2012 at 03:59 PM Author Report #465990 Posted June 27, 2012 at 03:59 PM uma coisa deste género: if (HttpContext.Current.Session!= null) { HttpContext.Current.Session["nome"]="qualquer coisa"; } else { // redirect para a página de login } Mais ou menos. Já está resolvido.
dvdribeiro Posted September 1, 2012 at 01:29 PM Report #474253 Posted September 1, 2012 at 01:29 PM diogom este tipo de técnicas têm uma designação que é defensive code ou defensive programming, que neste caso em concreto consiste em começar por verificar se as instâncias estão criadas e/ou contêm a informação que necessitamos para continuar: http://geekswithblogs.net/sdorman/archive/2008/07/04/what-is-ldquodefensive-programmingrdquo.aspx Uma boa ferramenta que pode ajudar a complementar o defensive code é o code analysis do Visual Studio. Muitas vezes ignoramo-lo mas dá excelentes dicas. Contudo de uma forma geral, pelo menos ter noção se estamos a consultar algo que possa gerar uma excepção (como era o caso deste código), ou estamos a executar código específico da framework .net (ex.: Xmldocument.Load pode gerar uma XmlException - devemos ter o cuidado de prever essas hipóteses tratando o erro em função do que é pretendido pelo sistema), e "bater" o código com esse cuidado faz muita diferença na hora de apanhar esta situações!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now