Asp.net variável de sessão
Eu tenho um asp.net projecto com código C# atrás. Eu tenho uma classe estática chamada Globalvariável onde eu guardo algumas informações, como o produto selecionado atualmente, por exemplo.
no entanto, eu vi que quando há dois usuários usando o site, se um muda o produto selecionado, se muda para todos. As variáveis estáticas parecem ser comuns a todos.
Eu gostaria de criar (a partir do código C#) algum tipo de variável de sessão usada apenas a partir do código C#, mas não só da página, mas de qualquer aula.
3 answers
As variáveis estáticas Sim são partilhadas por toda a aplicação, não são de modo algum privadas para o utilizador/sessão.
Para aceder ao objecto de sessão a partir de uma classe não-página, deve usar HttpContext.Current.Session
.
GlobalVariable
é um nome enganador. Seja qual for o nome, não deve ser se for por sessão. Você pode fazer algo assim em vez disso:
// store the selected product
this.Session["CurrentProductId"] = productId;
Você também não deve tentar tornar a Colecção Session
acessível globalmente. Em vez disso, passe apenas os dados de que necessita e obtenha / defina usando Session
, quando apropriado.
Aqui está uma visão geral sobre o trabalho com armazenamento de sessões em ASP.net no MSDN.
Exemplo:
public string SelectedProductName
{
get { return (string)Session["SelectedProductName"]; }
set { Session["SelectedProductName"] = value; }
}