- PR -

セッションタイムアウトの判断

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/02/17
投稿数: 2
投稿日時: 2005-11-01 21:06
李と申します。

Session_Endについて、下記の質問がありますので、
ご存知の方がご教授お願いいたします。

セッションがタイムアウトする場合も、アプリケーションが正常に終了する場合も、Session_Endを実行すると認識しておりますね。認識が正しいでしょうか?

認識が正しければ、Session_Endというメソッドの中に、セッションがタイムアウトするか、アプリケーションが正常に終了するか について、どのように判断しますか?

以上
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-11-01 21:38
NAL-6295です。

セッションがタイムアウトした時にSession_Endが実行されるのは、
セッションのモードがInProcの時だけです。
また、セッションのモードがInProcの時は、プロセスリサイクリングの度に、
セッションがクリアされてしまいますので、Session_Endの発生は保証されません。
未記入
会議室デビュー日: 2005/02/17
投稿数: 2
投稿日時: 2005-11-02 10:03
→NAL-6295 様

ご回答ありがとうございます。

セッションのモードがInProcの時では、セッションがタイムアウトする場合でも、アプリケーションが正常に終了する場合でも、Session_Endが実行されるという認識が正しいでしょうね。よろしいでしょうか?

そうすれば、Session_Endというメソッドの中に、セッションがタイムアウトするか、アプリケーションが正常に終了するか について、どのように区別しますか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-06 16:21
 複数の問題があります。

・Session_End は、InProc でなければ発生しない
・InProc では、プロセスリサイクルのため、Session_End を発生させずにセッションが消える(つまり、必ず発生するわけではない)

 また、「アプリケーションが正常に終了する」のは、いつでしょう?ユーザが「ログオフ」したからといって、アプリケーションが終了するわけではありません。

_________________
検索のコツ質問のコツ

[ メッセージ編集済み 編集者: Jitta 編集日時 2005-11-06 16:21 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-11-06 17:36
NAL-6295です。

引用:

セッションのモードがInProcの時では、セッションがタイムアウトする場合でも、アプリケーションが正常に終了する場合でも、Session_Endが実行されるという認識が正しいでしょうね。よろしいでしょうか?



よろしくないです。
Session_Endが発生するのは、
・セッションのモードがInProcの時で、
・セッションがタイムアウトになった時
のみです。
もちろん、プロセスリサイクリングで再起動された時にセッションがクリアされてしまいますが、そのタイミングで発生する事はありません。
つまり、プロセスリサイクリングが発生したタイミングですべてのセッションは切断されてしまうが、だからといってセッションタイムアウトになったわけではないので、その場合、該当セッションに対応したセッションタイムアウトは発生しません。

どちらにしろ、プロセスリサイクリングの発生タイミングを意図的に操作する事はできませんので(厳密に言えば、許容するメモリの使用率を変更することで後ろにずらすことは可能)、Session_Endの発生を期待した実装はしない方が良いでしょう。
1

スキルアップ/キャリアアップ(JOB@IT)