Web サイトに 3 つのアクティブなセッション Session["name"]、Session["lastname"]、Session["username"] がありますが、Session.Abandon() はそれらすべてを破棄しますか?
3 に答える
実際には、アクティブなセッションは1 つです ( 3つではありません)。そのセッションには、これら 3 つのキーと値のペアが関連付けられています。
はい、Session.Abandon() は、現在のページの処理が終了するとすぐに、セッションを放棄するプロセスでこれらの変数をすべて削除します。
Abandon メソッドが呼び出されると、現在のセッションは無効になり、新しいセッションを開始できます。
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx
Abandon メソッドが呼び出されると、現在の Session オブジェクトは削除のためにキューに入れられますが、現在のページのすべてのスクリプト コマンドが処理されるまで、実際には削除されません。これは、Abandon メソッドの呼び出しと同じページの Session オブジェクトに格納されている変数にアクセスできますが、後続の Web ページではアクセスできないことを意味します。
http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx
アップデート
ページの実行が完了する前にキーと値のペアを「削除」したい場合は、次のようにクリアできます。
Session.Contents.RemoveAll()
はい、オブジェクトは破棄されますが、すぐには破棄されません ( msdnから)
Abandon メソッドが呼び出されると、現在の Session オブジェクトは削除のためにキューに入れられますが、現在のページのすべてのスクリプト コマンドが処理されるまで、実際には削除されません。これは、Abandon メソッドの呼び出しと同じページの Session オブジェクトに格納されている変数にアクセスできますが、後続の Web ページではアクセスできないことを意味します。
1 つのセッションと 3 つの変数です。それらをできるだけ早く削除する必要がある場合は、nullを指すようにすると、データはすぐに GC の対象になります (これは確定的ではありません)。
Session["name"] = null;
Session["lastname"] = null;
Session["username"] = null;