佐々木屋

技術的なことから趣味まで色々書きます

Sessionの削除

実務であまりSessionを利用することは無いですが、備忘録として書いておきます。
なお、たいしたコードではないのでVBは省略します。VB派の方は脳内変換して下さい。


個別削除する場合です。

Session["Hoge"] = "Piyo";
Session.Remove("Hoge");
Debug.WriteLine(Session["Hoge"]);

この場合、Session["Hoge"]はnullを返しますので、何も表示されません。なお、大文字小文字判別しませんので、Session.Remove("HOGE");でも削除されます。


次に全て削除する場合です。

Session["Hoge"] = "Piyo";
Session.RemoveAll();
Debug.WriteLine(Session["Hoge"]);

これもNullとなります。
なお、RemoveAllメソッドの他にClearメソッドでも結果は同じです。処理内容も一緒。
個人的な予想ですが、恐らくRemoveに対するRemoveAllという感じかな。そしたらClearと一緒やんけ!みたいな?


実は全て削除する方法はもう一つあります。

Session["Hoge"] = "Piyo";
Session.Abandon();
Debug.WriteLine(Session["Hoge"]);
Piyo

Abandonメソッドは削除という点ではRemoveAllメソッドと等価ですが、タイミングが異なります。
RemoveAllメソッドは呼ばれた段階でSessionを削除しますが、Abandonメソッドは呼ばれたページスクリプトが完了するまで削除は実行されません。よって例のように同じページスクリプト内であれば「Piyo」が表示されます。