0

私は ASP.Net の初心者で、基本的な質問があります。答えを見つけようとしましたが、失敗しました。

ログに記録されたユーザー ID を Web アプリのページで保持するために、セッション変数を使用しています。

 if (Session["LoggedUserKey"] == null)
 {
     Session.Add("LoggedUserKey", UserID);
 }
 else
 {
     Session["LoggedUserKey"] = UserID;
 }

セッション タイムアウトの期限が切れた後、何が起こるかわかりません。ユーザー ID を失うことはありますか? 次のようなセッション変数について尋ねると、セッションタイムアウトが延長されます。

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["LoggedUserKey"] == null)
    {
         Response.Redirect("~/Login.aspx");
         return;
    }
}
4

3 に答える 3

2

セッションが期限切れになるか、セッション タイムアウトが発生すると、Session_Endglobal.asax のイベントが発生し (セッションが DB によって処理される場合を除く)、セッション コレクションが最終的にクリアされます。

オブジェクトがセッション コレクション内の値への参照を保持していない場合、GC はそれを収集します。ただし、GC がこれらのオブジェクトを削除する正確な時期については、多くを語ることはできません。

また、セッション タイムアウトが延長されたかどうかについてはtimeout、クライアントからの要求がこれ以上受信されない場合、現在のセッションが破棄されるまでに経過しなければならない現在の分数を示します。この値はプログラムで変更できるため、より重要な操作が必要になったときに、セッション コレクションを長期間保持することができます。

したがって、ユーザーがタイムアウト期間の前に何らかのアクティビティを実行すると、セッションが延長されるという結論になります。ユーザーがタイムアウト期間後に何らかのアクティビティを行うと、セッションは確実に期限切れになり、ユーザーはログイン ページにリダイレクトされるか、セットアップに応じて適切な次のステップが実行されます。

于 2013-09-05T12:09:32.367 に答える