Estado da sessão removendo e adicionando despesas gerais
-
21-08-2019 - |
Pergunta
A seguir, é como eu costumo lidar com objetos no estado da sessão, tenho uma string const como o nome da sessão e, em seguida, tenho uma propriedade com um GET e definido para o objeto.
O que eu queria saber era se a chamada 'session.remove () era necessária (para manter as coisas limpas e arrumadas) e se houvesse despesas gerais significativas e fazendo essa remoção.
Eu tenho a sessão. Remoove Basicamente porque me faz sentir melhor (o TOC que conheço) e me faz sentir que a sessão é mais limpa, mas gostaria de saber se não é necessário.
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
}
}
EDITARDe acordo com as respostas abaixo, mudei minhas propriedades para o seguinte:
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session[sesMyObject] = value;
}
}
obrigado!
Solução
Se você verdade Deseja estar seguro, tente converter o objeto em um idispotável e, se for bem -sucedido, ligue para descartar.
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
Fora isso,
Session[sesMyObject] = value
é praticamente o mesmo que
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
Outras dicas
É um exagero. Consultando Msdn
Se o parâmetro de nome se referir a um item de estado da sessão existente, o item existente será substituído pelo valor especificado.
Session[sesMyObject] = value;
é mais curto, mais simples de ler e deve ter um desempenho um pouco melhor, mas, a menos que esse código esteja sendo repetido muitas vezes em sucessão, não deve fazer a diferença.