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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top