- PR -

Sessionの状態管理に関して

1
投稿者投稿内容
只吉
会議室デビュー日: 2006/04/10
投稿数: 9
投稿日時: 2006-05-26 14:18
いつもお世話になっております

[IIS-5.0][Framework 1.1][VB.Net2003]
でwebアプリケーションを開発しています


ログイン時にそのユーザの属性をSessionに保存し
各ページでログインしているのかどうかを判断する材料に使用して
仮にSessionに該当情報がない場合はログインページまで戻す様にしています

その状態でアプリケーションを動かしていると
デフォルトである20分を超えていないにも関わらず
Session情報が取れなくなったようで
ログインページまで戻される事が多々出てくるようになりました

そこでSessionのタイムアウトを120分までに伸ばしてみたのですが
それでもやはり10分ぐらいの操作で戻される事があります

色々とSessionに関して調べてみると
Sessionの開放をきちんと行わなければメモリを消費しきってしまう為
同じような現象が起こる可能性があるとのことでした

今はSessionを使用する場合は
○Session("Test")="テストデータ"
の書式で値を入れて
○Session("Test")=Nothing
で終わらせるようにしていますが

Sessionの開放というのは
○Session.Remove("Test")
のようにRemoveを使用しない限り駄目なのでしょうか?
色々調べてみた所、最近Removeの存在に気が付いた次第です


またこのようなログイン管理をSessionで使用している場合に
どのページでユーザーが終わらせるか分からない場合は
各ページでSessionの開放を記述しておくべきなのでしょうか?
それとも何処かで共通して
アプリケーションの終了が分かるような箇所がありますでしょうか?

初心者的な質問で申し訳ありませんが
ご存知の方や、同じ問題を解決した事がある方はご教授下さい
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-05-26 15:06
sessionState の mode は何にしてますか? InProc ではないですか?
只吉
会議室デビュー日: 2006/04/10
投稿数: 9
投稿日時: 2006-05-26 15:51
>sessionState の mode は何にしてますか? InProc ではないですか?

お返事有難うございます
SessionのStateに関してはデフォルトのままなので
ModeはInprocになってるかもしれません
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-05-26 15:57
引用:

只吉さんの書き込み (2006-05-26 14:18) より:

それとも何処かで共通して
アプリケーションの終了が分かるような箇所がありますでしょうか?


Global.aspx.vb の「Session_End」とか「Application_End」とか。

Session.Clear() ってのもあります。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-26 16:08
引用:

只吉さんの書き込み (2006-05-26 15:51) より:
>sessionState の mode は何にしてますか? InProc ではないですか?

お返事有難うございます
SessionのStateに関してはデフォルトのままなので
ModeはInprocになってるかもしれません



InProc の場合には Web サーバの都合でセッション変数は破棄されます。
中さんのブログが参考になるかな
http://blogs.wankuma.com/naka/archive/2006/03/16/21958.aspx

しかし InProc 以外だと Session_End は発生しないので
ブラウザをいきなり落としてしまった場合にセッションが残るのは
あきらめる(おかしくならないようにアプリケーションをつくる)しかないかな。
只吉
会議室デビュー日: 2006/04/10
投稿数: 9
投稿日時: 2006-05-26 16:20
ひろれいさん
参考にしてみます、有難うございます

かるあさん
リンクの記事を読んでみます
しかしInproc以外を使うとセッションは残ってしまうんですね・・なるほど
たとえばログアウト画面を作っているのですが
そこで全てのセッションを破棄していたとしても
ユーザーがログアウトせずにブラウザーを落とした場合は対応出来ないわけですね
うむむ・・。
1

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