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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top