Httpcontext 当前缓存被清除

Httpcontext current cache gets cleared

我正在使用 Insert 方法将值存储到 HttpContext.Current.Cache 中:

HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), TimeSpan.Zero);

在我看来,这应该在 1440 分钟内将值存储在缓存中。但是不知何故缓存被清除并且密钥不再存在。上次我检查这个缓存在大约 30 分钟内保存。

是否可以通过某种方式清除缓存?如果 AppPool 被回收或类似的东西?

是的,缓存存储在内存中,直到进程停止,因此重新启动/重置 IIS 或回收应用程序池将清除缓存。如果是本地主机,构建应用也会清除缓存。

你确定那段代码被执行了吗?在 Cache.Insert 中同时设置 AbsoulteExpirationSlidingExpiration 是非法的。如果执行,您的代码应该抛出 ArgumentException

看到这个 link

正确的用法是

HttpContext.Current.Cache.Insert(key, item, null, dateExpiration, Cache.NoSlidingExpiration);

如果您想要 AbsoluteExpiration 1440 分钟,请使用 Cache.NoSlidingExpiration

HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), Cache.NoSlidingExpiration);

希望对您有所帮助。