2009-03-25 13 views
0

セッションが期限切れになっていないかどうかを確認するにはどのイベントが最適ですか?私は各サーバーの要求をトラップしようとしていて、セッションがnullの場合は、別のページにリダイレクトします。ASP.NETグローバルイベント

答えて

0

これは、すべてのotehrクラスに対して基本Pageクラスを使用し、これをPage_Loadメソッドで実装することによって最もよく達成されます。

+0

@ckこれは実際にはglobal.asaxのものです。 – eglasius

+0

私はちょうどオプションを提供しています – cjk

+0

確かに、OPがクラス単位でクラスのページにリダイレクトしたい場合、これをページイベントに追加するのが最善の方法です(ただし、これはpage_loadより前のイベントにこれを追加しますページハンドラのprocessrequestが開始される前のセッションが適切に実行されています) – annakata

1

新しいセッションがとSession_OnStartをフックして作成されているかどうかを判断することができます - http://msdn.microsoft.com/en-us/library/ms178583(VS.80).aspx

あなたは、Global.asaxの ファイルに とSession_OnStartという名前のサブルーチンを追加することによって、とSession_OnStart イベントを処理することができます。 Session_OnStartサブルーチン は、要求が新しいセッションを開始する場合、要求の最初に実行されます。 要求が行われ、 のSessionID値が含まれていない場合、または要求 に含まれるSessionID プロパティが期限切れのセッションを参照している場合、新しいセッションが開始されます。

これは、ユーザーがちょうど到着したかセッションが終了したかにかかわらず、新しいセッションが作成されたときを効果的に示します。

両方のシナリオを確実に区別することは困難です。セッションクッキーまたはURL(cookieless)に埋め込まれたセッションIDを保持しようとする可能性がありますが、上記のイベントになる前に確認してから、リクエストにセッションID。あなたが(あなたがそれを見るライフサイクルの早い段階であるかどうかわからない)asp.netがあなたに与えるURLから剥奪されるので、あなたがcookieless版のセッションIDにアクセスできるかどうかを確認してください。

0

Pageクラスを継承するBasePageクラスを使用します。すべてのaspxページがそのBasePageクラスを継承するようにします。 BasePageクラスでOnInitイベントをオーバーライドし、セッションやCookieを確認したり、ユーザーをログインページにリダイレクトしたりすることができます。
実装と使用が簡単なので、この方法はすべての鉱山webformsアプリに使用します。

関連する問題