- PR -

ASP State Serverについて

投稿者投稿内容
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-06-01 13:16
セッション管理にStateServerモードを使用することになりました。
StateServerを利用することで、セッション情報をメモリ上ではなくサーバ上に格納されるわけですが、
そのセッション情報を見ることは可能なのでしょうか?
またStateServerに格納されたセッションはセッションタイムアウトできれいに削除されるのでしょうか?
それとも、ゴミとして残ってしまうのでしょうか?
ご教授お願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-01 15:52
引用:

tonさんの書き込み (2004-06-01 13:16) より:

StateServerを利用することで、セッション情報をメモリ上ではなくサーバ上に格納されるわけですが、そのセッション情報を見ることは可能なのでしょうか?



 細かいことですが、「サーバ上」というのは?「メモリ上」と「サーバ上」の対比が、何を基準に対比しているのかわかりません。
 また、『見ることができる』のは、なにが、どのようにでしょう?セッション中のプロセスから、そのセッションに関係するセッション情報が見えないなら、それは「外部に格納」とは言えませんよね。また、他のセッションから見ることができれば、それはセキュリティフェイルです。同じく、他のプロセスからも、メモリ内容を無理矢理見る、等と言うことが、もしかしたらできるかもしれませんが、あくまでも「無理矢理」であって、.NET Frameworkがマネージドな範囲で用意している部品だけを使っては見えないと思います。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-06-01 16:11
Jittaさんありがとうございます。

『見ることができる』というのは、「セッションが確かにStateServerに格納されている」ということを確認したいのです。セッションの内容が知りたいのではなく、「StateServerを使うことによって、ココにデータが格納されている」ということが知りたいのです。InProcではなくStateServerに変えたということはメモリ上ではなく、PCのどこかにデータが書き出されてるのではないかと考えたからです。だったらそのデータはどこにあるのだろう?と思いまして。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-01 16:47
引用:

tonさんの書き込み (2004-06-01 16:11) より:

『見ることができる』というのは、「セッションが確かにStateServerに格納されている」ということを確認したいのです。


 だったら簡単なアプリケーションを作成して、ポストバックによってセッション情報を表示させればよいのでは?タイムアウトを1分ほどにしておけば、それくらい待ってからメモリ上から消えたかどうかはわかりませんが、参照できないことは確認できますよね。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-06-03 09:55
現在作成中のwebアプリでタイムアウトを10分に設定してテストしていますが、
確かに参照できないことは確認できます。
参照できない=セッション情報がクリアされたということですよね。

InProcはメモリ上にセッション情報が格納されるのに対して、
StateServerはどこに格納されるのでしょうか?
「外部」がどこなのかがわからないのです。
テキストで吐き出されるとかではないということなのでしょうか。
もし、何らかの形で目に見えるデータとして吐き出されているのなら
それを明らかにしたいのです。
質問の意図が伝わりにくくてすいません・・・
その辺をはっきりさせろと言われているのですが調べても全くわからなくて。。。

どうぞよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-03 12:54
引用:

tonさんの書き込み (2004-06-03 09:55) より:
現在作成中のwebアプリでタイムアウトを10分に設定してテストしていますが、
確かに参照できないことは確認できます。
参照できない=セッション情報がクリアされたということですよね。


 それは、何とも言えません。セッション情報は、おそらくメモリに割りあてられているでしょう。そこへの参照が消えているだけで、メモリは確保され、内容も残っている可能性があります。これはガベージコレクタが処理します。つまり、ガベージコレクタが動作するまでは、メモリが確保されたままである(誤解あり)、といってもよいかと。つまり、「クリア」というのを“完全な破棄”と定義すると「いいえ」ですし、“参照できない”とすると「はい」です。なので、『参照できないことは確認できる』というぼかした書き方をしています。


引用:

InProcはメモリ上にセッション情報が格納されるのに対して、
StateServerはどこに格納されるのでしょうか?
「外部」がどこなのかがわからないのです。
テキストで吐き出されるとかではないということなのでしょうか。
もし、何らかの形で目に見えるデータとして吐き出されているのなら
それを明らかにしたいのです。


 aspnet_state.exeというタスクが動作しているのですが、こいつが何かしているんでしょうねぇ。SQL Serverに格納したら、「データベースに格納されます」と言えるのですが。。。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-06-03 13:17
Jittaさん、たびたびありがとうございます。

>aspnet_state.exeというタスクが動作しているのですが、
>こいつが何かしているんでしょうねぇ。
>SQL Serverに格納したら、「データベースに格納されます」と言えるのですが。。。

やはりわかりませんか・・・
どこに格納されているんだろうと思って、
更新日付でフォルダを検索してみたりしたのですが見つけられませんでした・・
SQL Serverモードと同じような処理をしているのなら、きっとどこかに格納されているはずだって思ったんですけどねぇ。
aspnet_state.exeが何をしてくれているのか、謎です。
とりあえず信頼性の向上のために使用することにはなったのですが、
いまひとつはっきりしないことが多くて困ります。
使ってみてはいるものの・・・という感じです。
State Serverってみなさん使われているのでしょうか?

なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-06-03 13:36
引用:

tonさんの書き込み (2004-06-03 13:17) より:
やはりわかりませんか・・・
どこに格納されているんだろうと思って、
更新日付でフォルダを検索してみたりしたのですが見つけられませんでした・・
SQL Serverモードと同じような処理をしているのなら、きっとどこかに格納されているはずだって思ったんですけどねぇ。
aspnet_state.exeが何をしてくれているのか、謎です。
とりあえず信頼性の向上のために使用することにはなったのですが、
いまひとつはっきりしないことが多くて困ります。


普通に考えれば単にメモリ上に持ってるだけだと思いますが…
※いや確かに、信頼性向上のために何かしている可能性はあるかもしれませんが。

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