オブジェクトをキャッシュに保存するasp.netアプリを作成しています。ページが最初にロードされるとき、オブジェクトのキャッシュがチェックされ、存在する場合はそのオブジェクトが使用されます。オブジェクトが存在しない場合は、オブジェクトを再構築してキャッシュに保存します。複数のユーザーが同時にこのアプリを使用できるため、キャッシュ キーが SessionID であるオブジェクトをキャッシュに格納しようとしていました。ページがポストバックされると、セッション ID が変更されることに気付きました。そのため、別の一意のキーを使用する必要があります。助言がありますか?ログインした人のuserIDを使おうと思ったのですが、同じIDで複数回ログインできるので、これも一意ではありません。
2 に答える
私はMSDNから私の答えを見つけたと思います(これは2.0,3.5への変更です):
「Cookieベースのセッション状態を使用する場合、ASP.NETは、Sessionオブジェクトが使用されるまで、セッションデータにストレージを割り当てません。その結果、セッションオブジェクトにアクセスするまで、ページ要求ごとに新しいセッションIDが生成されます。アプリケーションの場合セッション全体に静的セッションIDが必要な場合は、アプリケーションのGlobal.asaxファイルにSession_Startメソッドを実装し、Sessionオブジェクトにデータを格納してセッションIDを修正するか、アプリケーションの別の部分のコードを使用して明示的にすることができますSessionオブジェクトにデータを保存します。」
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx
セッション ID は、ポストバックで変更されるべきではありません。同様のことを行うためにasp.netで使用されます。シナリオに関する詳細情報を提供できますか? どのタイプのデータ、なぜ/いつ「キャッシュ」しようとしていますか
更新 1:ポストバックごとに変更されますが、Cookie を無効にしていますか? どのバージョンの asp.net を使用していますか?