- - PR -
HttpContext.Current.Cacheについて
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-02-17 13:59
いつも参考にさせていただいてます。
Asp.netでWebの開発をしています。 ユーザー個別のデータを保持するのにCacheを使用しています。異なるページ間でこのデータを使用します。 下記のようにしました。 HttpContext.Current.Cache.Insert(key, val, Nothing, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration) これはサーバ上で共有されてしまうのでしょうか? このデータはユーザ毎に異なります。 ユーザ1がアクセスすると正しいデータがCacheに入っています。 ユーザ2がアクセスすると本来表示されるはずのデータではなくユーザ1のデータが表示されてしまいます。 初歩的で申し訳ないのですが、このCacheはユーザ毎に個別に持てるのではないのでしょうか?ユーザ毎にキーを変えないといけないのでしょうか? |
|
投稿日時: 2009-02-17 14:17
http://msdn.microsoft.com/ja-jp/library/system.web.caching.cache.aspx
> このクラスのインスタンスは、アプリケーション ドメインごとに 1 つずつ作成されます。 ということでWebアプリケーション単位で保持されるはずです。 ユーザ単位のデータはSessionで持つのが普通ですが、Cacheを使いたいのはなぜでしょう? |
|
投稿日時: 2009-02-17 14:43
>どっとねっとふぁん様
ありがとうございます。 最初Sessionで持っていたのですが、同じ現象(データが上書きされてしまう??)なのでCacheに変えてみたのですが同じでした。 データ保持の知識がまだまだです。 http://msdn.microsoft.com/ja-jp/library/hdxfb6cy.aspx このへんも調べていろいろ変更していたのですが、どうもうまく動作しません。 |
|
投稿日時: 2009-02-17 15:11
Sessionであれば基本的にユーザが異なれば上書きされたりしないはずです。
ちなみに、そのSessionを利用した場合って、テストはどのように行いました? もしかして一台のマシンからブラウザを2つ起動してテストしてたりしませんか? その場合、ブラウザの設定によっては、同一のセッションIDが使われます。 IEだと、デフォルトがそういう設定になっていたはずです。 Sessionが上書きされる、ということで考えつくのはこのあたりですね。 あとは問題があるとすればプログラムの書き方かな。 |
|
投稿日時: 2009-02-17 15:33
どっとねっとふぁん様
ありがとうございます。 テストはリモートデスクトップから別のユーザとしてブラウザを立ち上げ実行(ユーザ1) ローカルから自分のアカウントで実行(ユーザ2) なんです。 |
|
投稿日時: 2009-02-17 15:46
となると、あとはほんとにプログラムの書き方じゃないか、という気がしますが。
設定とかで問題になる場合あったかなぁ。。。 一般に個人毎のデータ管理にあhSessionがつかわれていて、問題もでていないものなので、問題がでるあなたの状況が特殊だと思います。 |
|
投稿日時: 2009-02-17 15:52
うーん、そうですか。
そういえば記述しているJavascriptあたりがあやしいかも! もっと調査してみます。 ありがとうございます。 |
|
投稿日時: 2009-02-17 16:24
こんにちわ
ふと思い当たったのですが、 URLにセッション文字列はいってたりしませんか? その場合、URLをコピペすると、見事に同一セッションでアクセスします。 |