4

ここに投稿されたこの質問と同様の質問を既に見ました。基本的に同じ質問がありますが、少しひねりがあります。

Session_End メソッド内からセッション情報にアクセスしようとしていますが、そこに到達するまでに HttpContext が null であるため、実際にアクセスする方法が見つかりません。Session_End が発火するまでに、すでに完全に消去されているようです。

関連する質問の解決策は、必要なセッション情報を参照するために使用できることを示しています。これは、 Global が継承する HttpApplication クラスから変数this.Sessionにアクセスします。HttpApplication.Sessionしかし、私のアプリケーションでは、Global で Session 変数を次のように再定義しました。

    public new static HttpSessionState Session
    {
        get
        {
            return HttpContext.Current.ApplicationInstance.Session;
        }
    }

したがって、私にとっては、this.Session を参照すると、null である HttpContext から情報を取得しようとします。

だから私は2つの質問があると思います。まず、Session_End の前で、Session データがクリアされる前に発生するイベントはありますか? 次に、最初の質問に対する答えが「いいえ」の場合、Session_End からそのデータにアクセスする方法はまだありますか?

ありがとう。

4

1 に答える 1

0

session_end は、in_proc セッション状態モードを使用している場合にのみ発生することに注意してください。サーバー ファームに Web アプリをデプロイする場合は発生しません。とにかく、あなたが何を達成したいのかわからない場合でも、HttpModule内でセッション終了を処理する方がよいでしょう。以下のリンクをご覧ください。

http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx

于 2011-04-07T09:08:56.737 に答える