Stato sessione rimozione e l'aggiunta di spese generali
-
21-08-2019 - |
Domanda
Il seguente è come io di solito gestire gli oggetti nello stato della sessione, ho un const string come il nome della sessione e poi avere una proprietà con un get e set per l'oggetto.
Quello che mi chiedevo era se la 'Session.Remove ()' chiamata era necessario (per mantenere le cose pulite e ordinate) e se ci fosse significativa in testa e facendo questa rimozione.
Ho il Session.Remove c'è fondamentalmente perché mi fa sentire meglio (OCD lo so), e mi fa sentire come la sessione è più pulita, ma vorrei sapere se non è necessario.
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);
}
}
Modifica secondo le risposte qui sotto ho cambiato proprietà al seguente:
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session[sesMyObject] = value;
}
}
grazie!
Soluzione
Se davvero vuole essere sicuri, provare a convertire l'oggetto a un IDisposable, e se ci si riesce, chiamare Dispose.
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
Oltre a questo,
Session[sesMyObject] = value
è praticamente lo stesso di
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
Altri suggerimenti
E 'eccessivo. Riferendosi MSDN
Se il parametro nome si riferisce ad un elemento esistente lo stato della sessione, il elemento esistente viene sovrascritto con il valore specificato.
Session[sesMyObject] = value;
è più breve, più semplice da leggere, e dovrebbe avere prestazioni leggermente migliori, ma a meno che questo codice si ripete molte volte di seguito, non dovrebbe fare la differenza.