我正在围绕System.Web.Caching.Cache
编写一个包装器。添加方法:
public void Add(string key, object data, IEnumerable<string> dependency)
{
var toInsert = dependency.Where(i => i != null && key != i).ToArray();
Cache.Add(key
, data
, toInsert.Any()
? new System.Web.Caching.CacheDependency(null, toInsert)
: null
, System.Web.Caching.Cache.NoAbsoluteExpiration
, TimeSpan.FromHours(1)
, System.Web.Caching.CacheItemPriority.Normal, null);
System.Diagnostics.Debug.WriteLine(Cache[key]);
}
问题是当CacheDependency
不为null时,item不会添加到缓存中。
但这种方法有效:
public void Add(string key, object data, IEnumerable<string> dependency)
{
var toInsert = dependency.Where(i => i != null && key != i).ToArray();
Cache.
Cache.Add(key
, data
, null
, System.Web.Caching.Cache.NoAbsoluteExpiration
, TimeSpan.FromHours(1)
, System.Web.Caching.CacheItemPriority.Normal, null);
System.Diagnostics.Debug.WriteLine(Cache[key]);
}
添加项目并打印到输出。
答案 0 :(得分:0)
构建CacheDependency
的方式看起来有点奇怪。您已将路径数组设置为null。参考here
您可以尝试更改此
new System.Web.Caching.CacheDependency(null, toInsert)
到
new System.Web.Caching.CacheDependency(new [], toInsert)
答案 1 :(得分:0)
如果在插入时刻缓存中至少有一个依赖关键字存在,则不会将项添加到缓存中。