Удаление состояния сеанса и добавление накладных расходов - PullRequest
3 голосов
/ 04 февраля 2009

Ниже описывается, как я обычно обрабатываю объекты в состоянии сеанса, в качестве имени сеанса у меня есть константная строка, а затем свойство с параметром get и set для объекта.

Что мне было интересно, так это то, был ли необходим вызов Session.Remove () (чтобы все было чисто и аккуратно) и были ли значительные накладные расходы при выполнении этого удаления.

У меня есть Session.Remove там, в основном потому, что это заставляет меня чувствовать себя лучше (OCD, я знаю), и я чувствую, что сессия чище, но я хотел бы знать, если она не нужна.

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 согласно ответам ниже, я изменил свои свойства следующим образом:

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
    get
    {
        return Session[sesMyObject] as MyObject;
    }
    set
    {
        Session[sesMyObject] = value;
    }
}

спасибо!

Ответы [ 3 ]

2 голосов
/ 04 февраля 2009

Это излишне. Ссылаясь MSDN

Если параметр name относится к существующий элемент состояния сеанса, существующий элемент перезаписывается указанное значение.

2 голосов
/ 04 февраля 2009

Если вы действительно хотите быть в безопасности, попробуйте преобразовать объект в IDisposable, и если это удастся, вызовите Dispose.

IDisposable sesDispObj =  Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
   sesDispObj.Dispose();

Кроме этого,

 Session[sesMyObject] = value

почти так же, как

 Session.Remove(sesMyObject);        
 Session.Add(sesMyObject, value);
1 голос
/ 04 февраля 2009
Session[sesMyObject] = value;

короче, проще для чтения и должна иметь чуть лучшую производительность, но если этот код повторяется очень много раз подряд, это не должно иметь значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...