後,我有以下問題,我有這樣的緩存管理:的MemoryCache總是返回「空」第一到期
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);
}
}
是相當簡單的。
編輯我(在這個問題的文本錯誤修復)
問題:當任意鍵緩存過期,下面所有的調用獲取緩存回報「空」的對象。我檢查鑰匙,並始終正確。
這個問題只發生在我的電腦中客戶端的服務器上,而我的服務器工作正常。
感謝。
編輯II(進步)
當我們重新啓動應用程序池在客戶的服務器,你的問題就解決了幾個小時。
有一個特定的應用程序池我們的網站具有以下設置:
管道管理模式:集成 框架:V4.0 啓用32位應用程序:真。
其他設置,如默認。
在服務器上我們有2個站點,其中一個啓用了「啓用32位應用程序」,如果兩者都禁用,則發生錯誤,但不知道是否是問題所在。
編輯III(進步)
我們不能解決這個問題,我們決定改用Httpcontext.Current.Cache,我們可以解決這個問題。我們想要另一個解決方案並繼續使用MemoryCache但沒有結果。
是什麼 – 2012-04-20 23:15:16
也許你應該重新考慮吞嚥所有異常並返回null。改用TryGetvalue。如果添加緩存的目的是爲了增加性能,那麼異常就不是要走的路。 – usr 2012-04-20 23:18:43
@RobertHarvey:谷歌搜索「exirar和諮詢」產生這篇文章作爲第一個結果:) – mellamokb 2012-04-20 23:19:56