web-dev-qa-db-ja.com

セッションまたはセッションIDを強制終了する方法(ASP.NET/C#)

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

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

私が試してみました:

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

30
anon271334

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
61
Kelsey

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

Session.Clear();
Session.Abandon();
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
8

Session.Abandon()

これにより、セッションは放棄済みとしてマークされますが、その時点ではセッションは実際に放棄されず、最初に要求を完了する必要があります。

5
Bob

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

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は、session-objectのブールフラグのみをtrueに設定します。呼び出し元のWebサーバーはそれに反応する場合もしない場合もありますが、ASPによる[〜#〜] no [〜#〜]即時アクションがあります。 (自分自身を.net-Reflectorで確認しました)

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

したがって、これを結論付けるには、Session.Clear()を使用してフラストレーションを軽減します。

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

3
Chuck

Session.Abandon();も機能しませんでした。

動作させるために書かなければならなかった方法は、このようなものでした。あなたにも役立つかもしれません。

HttpContext.Current.Session.Abandon();
1
kinthamen

Session.Abandon()これはデータを破壊します。

これは必ずしもユーザーからセッショントークンを本当に削除するわけではありません。使用するのが公正なゲームであると見なされるため、後で同じセッショントークンが取得され、同じIDを持つ新しいセッションとして作成される場合があります。

1
Chris Marisic

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

Session.Abandon()

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

Session.Clear()
1
Chris Cashwell
Session["YourItem"] = "";

.netのかみそりのWebページに最適です。

1
orf
Session.Abandon()

使用すべきものです。事は舞台裏にあります。asp.netはセッションを破棄しますが、次のページリクエストですぐに新しいセッションをユーザーに提供します。そのため、abandonを呼び出した直後にセッションが終了したかどうかを確認する場合は、機能しなかったように見えます。

1
Alan Barber