0
這裏是我的代碼:的MemoryCache不幾分鐘後工作
public class ConfigCache
{
private static volatile ObjectCache _cache = MemoryCache.Default;
private const string KeyModule = "MODULE_XDOC_KEY";
private static string _settingFile;
public ConfigCache(string file)
{
_settingFile = file;
}
public XDocument Get()
{
var doc = _cache[KeyModule] as XDocument;
if (doc == null)
{
doc = XDocument.Load(_settingFile);
var policy = new CacheItemPolicy();
var filePaths = new List<string> {_settingFile};
policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths));
var callback = new CacheEntryRemovedCallback(this.MyCachedItemRemovedCallback);
policy.RemovedCallback = callback;
_cache.Set(KeyModule, doc, policy);
}
return _cache[KeyModule] as XDocument;
}
private void MyCachedItemRemovedCallback(CacheEntryRemovedArguments arguments)
{
// Log these values from arguments list
}
}
當碰上_cache.Set()第一次,它工作正常:
- _cache.Set()效果很好,它將xdoc添加到緩存中。
但幾分鐘後,(1或2分鐘),緩存將不再工作:
- _cache.Set()不插入任何東西緩存
- _cache.Set()不報告任何錯誤。
- 回調MyCachedItemRemovedCallback從未觸發。
有人遇到同樣的問題: MemoryCache always returns "null" after first expiration
,但似乎還沒有解決。任何人都有這個想法嗎?
您能解釋主機進程嗎?它是作爲託管在IIS中的Web應用程序運行的,還是Windows服務? – CaptDialup
主機進程是在IIS 7中的Web應用程序,OS是贏7 – user2384171