次の問題があります。この種のキャッシュ管理があります。
public class CacheManager : ICacheManager {
private readonly ObjectCache cache;
public CacheManager() {
this.cache = MemoryCache.Default;
}
public void AddItem(string key, object itemToCache, double duration) {
var end = DateTime.Now.AddSeconds(duration);
this.cache.Add(key, itemToCache, end);
}
public T Get<T>(string key) where T : class {
try {
return (T)this.cache[key];
}
catch (Exception ex) {
return null;
}
}
public void Remove(string key) {
this.cache.Remove(key);
}
}
は非常に簡単です。
編集I(質問のテキストのバグ修正)
問題: いずれかのキーのキャッシュが期限切れになると、キャッシュ内のオブジェクトを取得するための次のすべての呼び出しが「null」を返します。私はキーをチェックし、常に正しいです。
この問題は PC のクライアントのサーバーでのみ発生し、サーバーは完全に動作します。
ありがとう。
エディットⅡ(上級編)
お客様のサーバーでアプリケーション プールを再起動すると、問題は数時間解決されます。
私たちのサイトには、次の設定を持つ特定のアプリケーション プールがあります。
パイプライン マネージャー モード: 統合フレームワーク: v4.0 32 ビット アプリケーションを有効にする: True。
デフォルトなどのその他の設定。
サーバーには 2 つのサイトがあり、1 つは「32 ビット アプリケーションを有効にする」が有効になっています。両方が無効になっている場合、エラーが発生しますが、これが問題かどうかはわかりません。
エディットⅢ(上級編)
問題の解決に失敗したため、Httpcontext.Current.Cacheに切り替えることにし、問題を解決することができました。別の解決策が必要で、引き続きMemoryCacheを使用しましたが、結果は得られませんでした。