El estado de sesión eliminar y añadir gastos indirectos
-
21-08-2019 - |
Pregunta
La siguiente es la forma en que normalmente manipular objetos en el estado de sesión, tengo una cadena const como el nombre de la sesión y luego tener una propiedad con un get y set para el objeto.
Lo que me preguntaba era si el 'Session.Remove ()' llamada era necesario (para mantener las cosas limpias y ordenadas) y si había una sobrecarga significativa y hacer esta eliminación.
Tengo la Session.Remove existen básicamente porque me hace sentir mejor (TOC sé), y me hace sentir que la sesión es más limpio, pero me gustaría saber si no es necesario.
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);
}
}
Editar por las respuestas a continuación he cambiado de propiedades a lo siguiente:
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session[sesMyObject] = value;
}
}
Gracias!
Solución
Si realmente quieren ser seguro, intente convertir el objeto a una IDisposable, y si tiene éxito, llamar a Dispose.
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
Aparte de eso,
Session[sesMyObject] = value
es más o menos lo mismo que
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
Otros consejos
Es una exageración. Refering MSDN
Si el parámetro de nombre se refiere a una elemento del estado de sesión existente, el elemento existente se sobrescribe con el valor especificado.
Session[sesMyObject] = value;
es más corto, más fácil de leer, y deben tener un rendimiento ligeramente mejor, pero a menos que el código se repite muchas veces en sucesión, no debe hacer una diferencia.