2016-09-13 7 views
0

私はGlobal.asax.csのSession_End()にいますセッションが終了したページを知るには?

セッションが特定のページで終了した場合にのみ実行する必要がある操作があります。パラメータ(senderとeventArgs)には何の助けもありません。ユーザーが最後のページを見つけ出す方法はありますか?

ありがとうございます。

答えて

0

おそらくHttpContext.Requestプロパティを使用できますが、セッションの有効期限が過ぎてもそれが有効かどうかはわかりません。

この場合、ユーザーが新しいページをリクエストするたびに、明示的にページURLをCookieに書き込む必要があります。こうすることで、セッションが終了しても、Cookieオブジェクトを確認し、最後に要求されたページが何かを確認することができます。

一般的なシナリオ、セッションは、エンドユーザーが自分自身を再認証する必要があります有効期限が切れるので、あなたが直接ログインページにリダイレクトする必要があり、あなたがForms Authenticationを使用している場合、あなたはちょうどあなたがのURLを格納することができますFormsAuthentication.RedirectToLoginPage();

+0

問題がある、私はログインリダイレクトを行うにはしたくありません。これは、セッションが特定のページでタイムアウトした場合にトリガーするだけのデータベース操作です。 HttpContext.Requestプロパティが役立つかどうかを見てみましょう。 – Pallavi

+1

最後にリクエストされたページだけが必要ですか?そのような場合には、ページネームやページURLをクッキーに保存することもできます。 – Rahul

0

言うことができたら、セッションごとにリクエストごとに最後にアクセスしたページ。このようにセッションが終了すると(global.asax Session_End)、セッションが終了する前に最後に訪問したページを読むことができます。

ほとんどのイベントはリクエストによってトリガされるためですが、明示的に放棄されない限り、セッションの終了はアクティビティの不足が原因です。ある期間要求がなかった場合、サーバーによって決定されます。定義によって、セッションが終了していることを示すユーザからの通信はありません。彼らは5分前にブラウザを閉じたかもしれない。

(セッション状態HttpSessionState.Modeプロパティの値がインプロセスである場合にのみ、それはです。そうでなければイベントは発生しません。)

関連する問題