(Atualizado para ser completo)
Você pode acessar variáveis de sessão de qualquer página ou controle usando Session["loginId"]
e de qualquer classe (por exemplo, de dentro de uma biblioteca de classes), usandoSystem.Web.HttpContext.Current.Session["loginId"].
Mas leia a minha resposta original ...
Eu sempre uso uma classe de wrapper em torno da sessão do ASP.NET para simplificar o acesso às variáveis da sessão:
public class MySession
{
// private constructor
private MySession()
{
Property1 = "default value";
}
// Gets the current session.
public static MySession Current
{
get
{
MySession session =
(MySession)HttpContext.Current.Session["__MySession__"];
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}
// **** add your session properties here, e.g like this:
public string Property1 { get; set; }
public DateTime MyDate { get; set; }
public int LoginId { get; set; }
}
Essa classe armazena uma instância própria na sessão do ASP.NET e permite que você acesse as propriedades da sessão de maneira segura, a partir de qualquer classe, por exemplo:
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
Esta abordagem tem várias vantagens:
- ele evita que você seja vítima de muitas transmissões de tipos
- você não precisa usar chaves de sessão codificadas em todo o aplicativo (por exemplo, Session ["loginId"]
- você pode documentar os itens da sua sessão adicionando comentários de documentos XML nas propriedades do MySession
- você pode inicializar suas variáveis de sessão com valores padrão (assegurando que eles não sejam nulos)