Estoy almacenando un único valor entero en HttpContext.Cache con un tiempo de caducidad absoluto de 5 minutos a partir de ahora. Sin embargo, después de esperar 6 minutos (o más), el valor entero aún está en la memoria caché (es decir, nunca se elimina aunque la expiración absoluta haya pasado). Aquí está el código que estoy utilizando:Caché ASP.AP absoluta caducidad no funciona
public void UpdateCountFor(string remoteIp)
{
// only returns true the first time its run
// after that the value is still in the Cache
// even after the absolute expiration has passed
// so after that this keeps returning false
if (HttpContext.Current.Cache[remoteIp] == null)
{
// nothing for this ip in the cache so add the ip as a key with a value of 1
var expireDate = DateTime.Now.AddMinutes(5);
// I also tried:
// var expireDate = DateTime.UtcNow.AddMinutes(5);
// and that did not work either.
HttpContext.Current.Cache.Insert(remoteIp, 1, null, expireDate, Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
}
else
{
// increment the existing value
HttpContext.Current.Cache[remoteIp] = ((int)HttpContext.Current.Cache[remoteIp]) + 1;
}
}
La primera vez que funciono UpdateCountFor ("127.0.0.1") se inserta 1 en la caché con la tecla "127.0.0.1" y una caducidad absoluta de 5 minutos a partir de ahora como se esperaba. Cada ejecución posterior luego incrementa el valor en la memoria caché. Sin embargo, después de esperar 10 minutos, continúa incrementando el valor en la caché. El valor nunca expira y nunca se elimina de la memoria caché. ¿Porqué es eso?
Tengo entendido que un tiempo de caducidad absoluto significa que el artículo será eliminado aproximadamente en ese momento. ¿Estoy haciendo algo mal? ¿Estoy malentendiendo algo?
Espero que el valor se elimine de la memoria caché después de 5 minutos, sin embargo, permanece allí hasta que reconstruya el proyecto.
Todo esto se ejecuta en .NET 4.0 en mi máquina local.
¿Tiene alguna configuración de configuración de caché extraña en su web.config? –
No, tengo predeterminado web.config – smoak