É 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