无法插入缓存

时间:2013-11-27 20:37:24

标签: c# caching

我正在尝试使用HttpContext.Current.Cache在页面重定向之间保留对象列表。这就是我所拥有的:

private string CACHE_KEY
{
    get
    {
        return "MyKey";
    }
}

protected List<object> SomeValue
{
    get
    {
        if (HttpContext.Current.Cache[CACHE_KEY] == null)
        {
            HttpContext.Current.Cache.Insert(CACHE_KEY, 
                                             new List<object>(),
                                             null,
                                             DateTime.Today.AddMinutes(30),
                                             TimeSpan.Zero);
        }
        return (List<object>)HttpContext.Current.Cache[CACHE_KEY];
    }

    set
    {
        HttpContext.Current.Cache.Insert(CACHE_KEY,
                                         value,
                                         null,
                                         DateTime.Today.AddMinutes(1),
                                         TimeSpan.Zero);
    }

}

当我尝试检索SomeValue时,HttpContext.Current.Cache[CACHE_KEY]最初为空,假设缓存项目计数为n。在insert语句之后,缓存项目计数为n + 1,但是当我检查结果视图时,新添加的项目缺失。此外,HttpContext.Current.Cache[CACHE_KEY]仍为空。

如果这还不够奇怪,这里有一个曲线球...我在我的网站的另一个页面上执行相同的代码块(有一些细微差别),它运行得很好。谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:2)

我认为这是因为您使用DateTime.Today代替DateTime.Now

DateTime.Today返回当前时间当前时间。而DateTime.Now同时返回。

MSDN reference