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」が表示されます。