tengo una clase que contiene la siguiente propiedad:elemento de la caché nunca se expira
public Dictionary<string, int> CommentCounts {
get {
string cacheKey = "CommentCounts";
HttpContext c = HttpContext.Current;
if (c.Cache[cacheKey] == null) {
c.Cache.Insert(cacheKey, new Dictionary<string, int>(), null, DateTime.UtcNow.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.High, null);
c.Trace.Warn("New cached item: " + cacheKey);
}
return (Dictionary<string, int>)c.Cache[cacheKey];
}
set {
HttpContext.Current.Cache["CommentCounts"] = value;
}
}
Parece que la sentencia trace sólo se ejecuta una vez, y no cada 30 segundos después de que el elemento en caché ha expirado. La única forma en que puedo obtener para actualizar el elemento en caché es hacer una oportunidad de código y reconstruir el proyecto, que obviamente es menos que ideal.
¿Qué me estoy perdiendo? Gracias de antemano ...
Eso tiene sentido. Dicho esto, ¿cuál es la mejor manera de actualizar el elemento en caché? – ianpoley
Agregué el código modificado para la propiedad que debería funcionar como estaba previsto. –
¡Bingo! Muchas gracias, eso funcionó como un encanto. – ianpoley