2

現在サインインしているユーザー (セッション情報の一部) を保存するキャッシュ (CachingBL) のラッパー クラスがあります。

CachingBL ラッパーには、実際にはユーザーの辞書があり、その辞書を次のようにキャッシュに入れていますHttpContext.Current.Cache.Insert(...)

セッションの最後に、次のようにキャッシュにアクセスする必要があります。

var cacheBL = (CacheBL)HttpContext.Current.Cache.Get("MyCache_CacheSlot");

しかし、問題はそれが空であるため、オブジェクトHttpContext.Currentにアクセスできないことです。Cacheキャッシュ自体は空ではありませんが (テスト済み)、 でアクセスする方法がわかりませんSession_End

4

4 に答える 4

3

System.Web.HttpRuntime.Cache を使用して、キャッシュに静的にアクセスできます。

于 2011-06-15T20:20:36.383 に答える
1

ディクショナリ全体を 1 つのキャッシュ エントリとしてキャッシュに入れる代わりに、各要素をエントリとしてキャッシュに入れます。次に、各要素にセッション タイムアウト時間のスライディング タイム ウィンドウを指定し、システムに期限切れを処理させることができます。

于 2009-12-21T16:54:56.187 に答える
0

System.Web.SessionState.HttpSessionState は、HttpContext.Current の代わりに使用する必要があるものです。

于 2010-01-25T21:56:57.447 に答える
0

Session_OnEnd イベント内では、現在のリクエストがないため、HttpContext.Current にアクセスする方法はありません。

ただし、すべてのセッション変数を含むセッション状態にアクセスできます。したがって、トークンをセッション キャッシュ スロットのキー名 (例では「MyCache_CacheSlot」) に格納するセッション変数を使用すると、Session_OnEnd イベント内でそのキャッシュを解放できます。

于 2009-12-21T17:06:26.927 に答える