33

ユーザーがログアウトボタンをクリックしたときにセッション (Session["Name"]) を破棄するにはどうすればよいですか?

MSDN の ASP.NET API リファレンスを調べていますが、あまり情報がないようです。かなり限定的なようです。しかし、ASP.NET クラスなどの他のページが見つかりません。

私が試してみました:

Session.Abandon();Session.Contents.Remove("Name");どちらも機能し ません。(Google検索のフォーラムでこれらを見つけました)

4

9 に答える 9

63

Abandonメソッドは機能するはずです(MSDN

Session.Abandon();

特定の項目をセッションから削除したい場合 ( MSDN ):

Session.Remove("YourItem");

編集:値をクリアしたいだけの場合は、次のことができます:

Session["YourItem"] = null;

すべてのキーをクリアしたい場合は、次のようにします。

Session.Clear();

これらのどれもうまくいかない場合は、怪しいことが起こっています。値を割り当てている場所を確認し、値をクリアした後に再割り当てされていないことを確認します。

簡単なチェック:

Session["YourKey"] = "Test";  // creates the key
Session.Remove("YourKey");    // removes the key
bool gone = (Session["YourKey"] == null);   // tests that the remove worked
于 2011-03-16T18:53:08.477 に答える
8

また、セッション ID の Cookie 値をクリアするようにクライアント ブラウザに指示することもお勧めします。

Session.Clear();
Session.Abandon();
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
于 2016-10-12T08:32:12.377 に答える
5

Session.Abandon()

これにより、セッションが放棄されたとマークされますが、その時点でセッションが実際に放棄されるわけではありません。最初にリクエストを完了する必要があります。

于 2011-03-16T18:53:47.603 に答える
4

私がテストしたものから:

Session.Abandon(); // Does nothing
Session.Clear();   // Removes the data contained in the session

Example:
001: Session["test"] = "test";
002: Session.Abandon();
003: Print(Session["test"]); // Outputs: "test"

Session.Abandon は、セッション オブジェクトのブール フラグを true に設定するだけです。呼び出し元の Web サーバーはそれに反応するかどうかはわかりませんが ASP による即時のアクションはありません。(.net-Reflectorで自分で確認しました)

実際、ブラウザの戻るボタンを 1 回押すことで、古いセッションで作業を続けることができ、通常どおり Web サイトの閲覧を続けることができます。

結論として、Session.Clear() を使用してフラストレーションを解消してください。

注意: ASP.net 開発サーバーでこの動作をテストしました。実際の IIS の動作は異なる場合があります。

于 2013-04-03T13:59:44.320 に答える
1

Session.Abandon()これにより、データが破壊されます。

これは、ユーザーからセッション トークンを完全に削除するとは限らないことに注意してください。後で同じセッション トークンが取得され、同じ ID を持つ新しいセッションとして作成される可能性があります。

于 2011-03-16T18:53:46.370 に答える
1

次のようにセッションを強制終了します。

Session.Abandon()

ただし、セッションを空にしたいだけの場合は、次を使用します。

Session.Clear()
于 2011-03-16T18:54:02.870 に答える
1
Session["YourItem"] = "";

.net かみそりの Web ページでうまく機能します。

于 2015-02-01T09:23:38.963 に答える
1
Session.Abandon()

使用する必要があります。asp.net はセッションを破棄しますが、次のページ リクエストでユーザーに新しいセッションをすぐに提供します。したがって、放棄を呼び出した直後にセッションが終了したかどうかを確認すると、機能しなかったように見えます。

于 2011-03-16T19:02:18.857 に答える