2011-02-03 14 views
4

私は以下について少し混乱しています: Global.asxのSession_Start()にいくつかのロジックを持つasp.net Webサイトを設定しました。私は、これがセッション中に1回だけトリガされることを期待していました。しかし、イベントは1回のリクエストごとに発生しました。ASP.Net Session_Startは常に起動します

ダミーのセッションオブジェクトを宣言すると、これで問題が解決されました。 また、web.configに<sessionState mode="InProc" />を追加するとこの問題を解決できます。私はIIS7を使用して、デフォルト値をチェックしましたが、これはすでに「処理中」に設定されています。

私に何かが不足していますか?これは正常な動作ですか?セッションオブジェクトを宣言しなくてもこのイベントが機能することを期待していました。

答えて

1

Sessionオブジェクトに何かを格納します。

Session["dummy"] = 1; 

http://blogs.msdn.com/b/nikhiln/archive/2007/06/21/detecting-session-timeout-in-asp-net-2-0-web-applications.aspx

+0

これは、Redisプロバイダを使用しているときに 'Session_Start'が起動しているシナリオで私にとってはうまくいっています。 SessionIDは常に正しいですが、各リクエストでセッションが新しいと考え続けました。 –

1

私が使用しているブラウザはクッキーを許可しない場合、この問題が発生したと思います。同様に、アプリケーションプールが再起動されている場合、セッションは失われます。

許可されていないクッキーの問題を解決します
<sessionState cookieless="true" /> 

..

+0

*** Count ***ユーザーに 'Session_Start'と' Session_End'を使用していませんか? 私はWebFarm、セッションモードSqlServerを使用します。 –

1

かを確認したい:

  • をWebブラウザのクッキーが有効になっていますか?
  • ブラウザのCookieを無効にするには、クッキーなしのセッション状態管理が必要です(セッションパラメータがクエリ文字列に含まれるため、これは適切な選択肢ではありません)。
  • Global.asxのApplication_Startの実行中に何か問題が発生した場合、アプリケーションがクラッシュして終了するような例外がスローされていないことを確認しましたか?
  • Application_Startの後、Session_Startの前の段階で何かしていますか?これが当てはまる場合は、前の点と同じことを確認してください。
+0

ウェブブラウザのCookieが有効になっている場合、プログラムでどのように取得するのですか? –

関連する問題