Session d'Etat et la suppression rallongeant
-
21-08-2019 - |
Question
Voici comment je gérer habituellement des objets dans l'état de session, j'ai une chaîne const comme le nom de la session, puis une propriété avec get et set pour l'objet.
Ce que je me demandais était si le « Session.Remove () » appel était nécessaire (pour garder les choses propre et bien rangé) et s'il y avait des frais généraux et importants à faire cette suppression.
J'ai là fondamentalement la Session.Remove parce qu'il me fait me sentir mieux (TOC je sais), et me fait sentir comme la séance est plus propre, mais je voudrais savoir s'il est pas nécessaire.
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);
}
}
EDIT par les réponses ci-dessous i ont changé mes propriétés à ce qui suit:
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session[sesMyObject] = value;
}
}
merci!
La solution
Si vous vraiment veulent être en sécurité, essayez de convertir l'objet d'un IDisposable, et si elle réussit, appeler Dispose.
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
En dehors de cela,
Session[sesMyObject] = value
est à peu près la même chose que
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
Autres conseils
Il est surpuissant. MSDN
Si le paramètre nom fait référence à une élément de l'état de session existant, est remplacée par l'élément existant valeur spécifiée.
Session[sesMyObject] = value;
est plus court, plus simple à lire, et devrait avoir une performance légèrement meilleure, mais à moins que ce code est répété un grand nombre de fois de suite, il ne devrait pas faire une différence.