C#缓存过期未生效

4
我正在将以下值添加到缓存中:
HttpContext.Cache.Insert(
    "ClientId", clientid, null,
    DateTime.UtcNow.AddYears(1), TimeSpan.Zero
);

我不希望缓存过期,所以我将日期设置为从现在开始1年后(DateTime.UtcNow.AddYears(1)),但是30分钟后缓存的值就不再存在了。


我目前正在本地托管应用程序,这些问题发生在开发/调试过程中。这一定是它。 - pablo
重复?https://dev59.com/YHI-5IYBdhLWcg3wj5JG - David Ruttka
3个回答

2

如果您希望项目永久存在,而不是缓存,请使用Application集合。如果存在内存压力,缓存不能保证按照您指定的时间保留项目。此外,根据您提到的30分钟,如果网站没有用户活动,则可能会回收应用程序域。


2

来自MSDN:

如果您正在使用绝对过期时间,则slidingExpiration参数必须是NoSlidingExpiration


0

我不知道为什么你的代码不起作用,但如果你不想让值过期,那么你可以使用 HttpContext.Current.Application.Add("ClientID", value)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接