セッション状態は削除し、オーバーヘッドを追加します
-
21-08-2019 - |
質問
、私はセッション名などのconst文字列を持っているし、その後のgetを持つプロパティを持っていると私は通常、セッション状態でオブジェクトを処理する方法をされて、次のオブジェクトに設定されます。
「Session.Remove()」の呼び出しは(清潔で整然と物事を保つために)必要であれば、そこに大きなオーバーヘッドだったし、この除去を行う場合です。私は思っていたことでした
私はそれが私が良い(私が知っているOCD)を感じさせる、およびセッションがクリーンであるように私は感じさせるが、私はそれが必要とされないかどうかを知りたいと思いますので、そこに基本的にSession.Removeを持っています。
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);
}
}
編集
:私は、次の私のプロパティを変更した以下の回答あたりprivate const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
get
{
return Session[sesMyObject] as MyObject;
}
set
{
Session[sesMyObject] = value;
}
}
ありがとう!
解決
あなたが本当にが安全になりたい<全角>場合は、IDisposableをオブジェクトに変換してみてください、それが成功した場合、処分を呼び出します。
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
それ以外は、
Session[sesMyObject] = value
タグとほとんど同じです
Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
他のヒント
それはやり過ぎだ。参照のうえ MSDN の
は、nameパラメータにはを参照している場合 既存のセッション・ステート・アイテム、 既存のアイテムが上書きされます 値を指定します。
Session[sesMyObject] = value;
読み、短く単純であり、そしてわずかに優れた性能を持っている必要がありますが、このコードは連続して非常に何度も繰り返されている場合を除き、それは違いを作るべきではありません。
所属していません StackOverflow