- - PR -
Sessionの状態管理に関して
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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の開放を記述しておくべきなのでしょうか? それとも何処かで共通して アプリケーションの終了が分かるような箇所がありますでしょうか? 初心者的な質問で申し訳ありませんが ご存知の方や、同じ問題を解決した事がある方はご教授下さい | ||||
|
投稿日時: 2006-05-26 15:06
sessionState の mode は何にしてますか? InProc ではないですか?
| ||||
|
投稿日時: 2006-05-26 15:51
>sessionState の mode は何にしてますか? InProc ではないですか?
お返事有難うございます SessionのStateに関してはデフォルトのままなので ModeはInprocになってるかもしれません | ||||
|
投稿日時: 2006-05-26 15:57
Global.aspx.vb の「Session_End」とか「Application_End」とか。 Session.Clear() ってのもあります。 | ||||
|
投稿日時: 2006-05-26 16:08
InProc の場合には Web サーバの都合でセッション変数は破棄されます。 中さんのブログが参考になるかな http://blogs.wankuma.com/naka/archive/2006/03/16/21958.aspx しかし InProc 以外だと Session_End は発生しないので ブラウザをいきなり落としてしまった場合にセッションが残るのは あきらめる(おかしくならないようにアプリケーションをつくる)しかないかな。 | ||||
|
投稿日時: 2006-05-26 16:20
ひろれいさん
参考にしてみます、有難うございます かるあさん リンクの記事を読んでみます しかしInproc以外を使うとセッションは残ってしまうんですね・・なるほど たとえばログアウト画面を作っているのですが そこで全てのセッションを破棄していたとしても ユーザーがログアウトせずにブラウザーを落とした場合は対応出来ないわけですね うむむ・・。 |
1