当我将对象缓存到 时HttpContext Cache
,我的对象在下一次读取时消失,我必须第二次重新插入该对象(并非总是如此,但 90% 的时间)。在那之后,对象就没有任何问题地呆在那里。
这是发生的事情:
- 开始调试mvc项目
- 从缓存中读取年龄
- 年龄为空,所以我将 50 放入变量中,然后将其插入缓存中
- 对客户端的
CacheItemRemovedCallback
响应完成后立即执行。CacheItemRemovedReason
值为_Removed
- 用户点击立即刷新
- 从缓存中读取年龄
- 年龄仍然为空,所以我将 50 放入变量中,然后将其插入缓存中
- 用户点击立即刷新
- 从缓存中读取年龄
- 年龄终于到了!
那么为什么Cache
在第一次插入时将对象保留在缓存中呢?
这种行为存在于.Net framework 3.5, 4.0, 4.5, 4.5.2
.
这是代码:
public class HomeController : Controller
{
public ActionResult Index()
{
int? age = this.HttpContext.Cache.Get("age") as int?;
if (age == null)
{
age = 50;
this.HttpContext.Cache.Add("age", age, null, DateTime.Now.AddHours(5), TimeSpan.Zero, CacheItemPriority.Default, new CacheItemRemovedCallback(this.CacheItemRemovedCallback));
}
return View();
}
public void CacheItemRemovedCallback(String key, Object value, CacheItemRemovedReason reason)
{
}
}