"HttpContext.ます。セッション"vsす。asaxをする人が多くなっています。セッション"

StackOverflow https://stackoverflow.com/questions/464456

質問

最近では、一部のコード用ASP.NET プロジェクトです。この追跡utilを基本指標をユーザーの活動のページのヒットカウントなど)このトラックに Session, を押すと、データのDBによ Session_EndGlobal.asax.

私はハッキングは、当時の初期化コードに手を更新しDBはそれぞれのページ負荷時のものです。たいと思ったこのDBのヒットリクエストごとがかな Session_End 店舗のすべてのデータです。

すべてのトラッキングコードカプセル化され、 Tracker クラスを含む性質が本質的にラップセッションの変数.

の問題 この時に実行され Tracker.Log()Session_End 方法は、 HttpContext.Current.Session のトラッカーコードの失敗と NullReferenceException.現在、この意味から HttpContext 常に関するもの 現在の ご希望のコース Session_End, ありません。

知っている Global.asaxSession 性を返します HttpSessionState 実際にそうな作(し注入では、トラッカー)..

私は、こうした興味のある人は、どのように地獄を見たいので同じに HttpSessionState オブジェクトを使用する Global.asax から 外部Global.asax?

よろしくお願いいを入力します。:)

役に立ちましたか?

解決

グローバルasaxを実装しHttpApplication-というお話をご利用いただきます この らかにすることにあります。

にMSDN書 HttpApplication は、内容についてはできるのでHttpHandlerして、例えばアクセスの様々な特性です。

しかし

お申し込み可能の作成の複数インスタンスのHttpApplication取扱い並列の要求は、これらのインスタンスで再使用することができ、みたいなのでなんとかいうものではありませんguarenteeする権利を持っています。

私も、もう追加の注意-アプリケーションの場合はクラッシュがguarenteeるsession_endを呼んを失ったすべてのデータは全てのセッションを明確にしないかもしれない。

同意するとロギングでは、各ページにはいない素晴らしいアイデアも、途中でハウスと非同期ログイン起きてき火を詳細にログインクラスとしてログの詳細について-ない100%固体の場合はアプリがクラッシュがんにくを失います。

他のヒント

回答元の問題より:

背景

各ページのリクエスピンの新しい Session オブジェクトを膨らにセッション。このためには、このクッキーのお客様にご提供いただく特別のパスの構築(cookielessセッション).このセッション識別子で協議のセッション店deserializes(このはなぜすべての事業者がInProc必要が直列化可能)のセッションオブジェクトです。

の場合はInProcプロバイダーは単に手にする参照も保存され、 HttpCache 鍵付きのセッション識別子です。 そのため、InProcプロバイダ滴セッション状態の場合の AppDomain リサイクルもありましたか複数のwebサーバで共有InProcセッションの状態.

この新規作成された膨らませオブジェクトにこだわったの Context.Items コレクションでの期間になります。

変更する Session オブジェクトはその続きのご要望のセッション店による直列化さ(の場合InProc、 HttpCache 入力は更新).

以降 Session_End 火災現在までご要望をオンザフライでの Session オブジェクトはピッex-niloとなることができます。を使用する場合はInProcセッションの状態を終了 HttpCache トリガーでのコールバックイベントにお Session_End イベントでのセッションで、それでも、コピーの何が最後に保管され HttpContext.Cache.この値が格納されに対する HttpApplication.Session 物件内法と呼ばれる ProcessSpecialRequest がいします。の下でのその他のすべての場合、内部からの HttpContext.Current.Session 値とします。

ご回答

以降、Session_End常に火災に対するnull文脈を使用。セッションイベントや峠のHttpSessionStateオブジェクトザ-ミートガイで取りトレースコードです。その他のすべてのコンテキスト...でもフェッチから HttpContext.Current.Session その手のトレースコードです。 ない, しかし、せめてのトレースコードの上にセッションコンテキスト

私の答え

使用しない Session_End なることをご存知のセッション店舗をご利用の支援 Session_End, ができ 場合を返します true から SetItemExpireCallback.のみの店舗は、 InProcSessionState ます。書き込みが可能となりますセッションがいませんが、人研修事業サポート,中国ビジネスの Session_End あのような曖昧なものが複数ある場合はサーバー

と思うのですが答えはご質問:通常のセッション物件です。asaxとHttpContext.ます。セッション同じものがある場合には、電流ます。がの場合はセッションタイムアウトがアクティブな要求が使用できませんHttpContext.ます。

アクセスしたいならば、セッションメソッドから呼び出Session_End、そのパスとしてパラメータとします。作成過版のLog()メソッドは人間のHttpSessionStateパラメータとして、電話トラッカー。ログ(こちら。セッション)からSession_Endイベントハンドラです。

ちなみ:いることはできませんのセッション終了イベントはかるでしょうか?まだ作業などのセッション状態でのプロセスです。使用時のSQLサーバーまたはStateServerにmangeのセッションの状態で、セッション終了イベントしません。

Session_End イベントを上げた場合のみ sessionstate mode 設定 InProcWeb.config ファイルです。場合にセッションモードに設定される StateServer または SQLServer, その場で決済までオンラインでない上げています。

使用 Session["SessionItemKey"] のセッションの値です。

大丈夫、私は同じような問題のセッションです。の代わりにsession_endイベント、実施のIDisposable ースのデストラクタマsessiontrackerクラスです。を修Dispose()メソッドを保存するセッション活動DBです。私は呼び出される法obj.Dispose()ユーザがクリックすると、グアウトボタンを押します。ご利用いただくユーザのブラウザによる間違い、GCコンのデストラクタは清掃中のオブジェクト(いかだでは、このメソッドを呼び出後時).のデストラクタのメソッドを内部で実行同Dispose()メソッドを保存するセッション活動DBです。

-シャン

セッションでのご用意です。asaxファイルの中で、Session_Startイベントです。うまでお待ちこん?

こSession_End行時のセッション時間なし。ブラウザのない起因するイベントで有効)、その時に、実際のイベント利用の場合はInProcプロバイダです。毎その他のプロバイダは、このイベントません。

徳?なSession_End.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top