7

オブジェクトをキャッシュに保存するasp.netアプリを作成しています。ページが最初にロードされるとき、オブジェクトのキャッシュがチェックされ、存在する場合はそのオブジェクトが使用されます。オブジェクトが存在しない場合は、オブジェクトを再構築してキャッシュに保存します。複数のユーザーが同時にこのアプリを使用できるため、キャッシュ キーが SessionID であるオブジェクトをキャッシュに格納しようとしていました。ページがポストバックされると、セッション ID が変更されることに気付きました。そのため、別の一意のキーを使用する必要があります。助言がありますか?ログインした人のuserIDを使おうと思ったのですが、同じIDで複数回ログインできるので、これも一意ではありません。

4

2 に答える 2

10

私は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

于 2009-02-28T02:53:39.433 に答える
0

セッション ID は、ポストバックで変更されるべきではありません。同様のことを行うためにasp.netで使用されます。シナリオに関する詳細情報を提供できますか? どのタイプのデータ、なぜ/いつ「キャッシュ」しようとしていますか

更新 1:ポストバックごとに変更されますが、Cookie を無効にしていますか? どのバージョンの asp.net を使用していますか?

于 2009-02-28T02:40:46.670 に答える