Jump to content

[Resolvido] Object reference not set to an instance of an object. session


Recommended Posts

Posted (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 by Caça
GeShi
Posted (edited)

Primeiro verifique se a Session["nome"]== null

Se for faça. Um response.redirect para a página de logon.

Edited by petvetbr

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

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.

Posted

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.

  • 2 months later...
Posted

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!

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.