É algo que pode ocorrer facilmente quando trabalhamos com Sessions dentro de uma aplicação Asp.NET. Para evitar isso, recomenda-se criar constantes e utilizá-las para gravar ou recuperar os valores armazenados nas Sessions.
Uma alternativa interessante é utilizar uma classe Facade para acessar e gravar os valores das Sessions.
Fiz uma classe chamada SessionVars para isso.
public static class SessionVars
{
/*constantes para as Sessions*/
public const string IdUsuario = "IdUsuario";
///
/// Verifica se a Contexto da Session é válido
///
private static bool IsSessionValid
{
get { return HttpContext.Current != null && HttpContext.Current.Session != null; }
}
///
/// Atalho para a Session
///
private static HttpSessionState Session
{
get { return HttpContext.Current.Session; }
}
#region UsuarioId
public static int? UsuarioId
{
get
{
if (IsSessionValid)
{
if (Session[IdUsuario] != null)
{
int idUsuario;
if (Int32.TryParse(Session[IdUsuario].ToString(), out idUsuario))
return idUsuario;
return int.MinValue;
}
}
return null;
}
set
{
if (IsSessionValid)
{
Session[IdUsuario] = value;
}
}
}
#endregion
}
Em qualquer página aspx.cs basta acessar a classe estática e a propriedade desejada para ler o valor ou gravar.
if (SessionVars.UsuarioId != null)
{ //
SessionVars.UsuarioId = 10;
}
Crie todas as constantes para os nomes das sessions e a propriedade com Get/Set específica.
Nenhum comentário:
Postar um comentário