¿Es posible obtener el vencimiento DateTime
de un objeto HttpRuntime.Cache
?¿Cómo puedo obtener el datetime de caducidad de un objeto HttpRuntime.Cache?
Si es así, ¿cuál sería el mejor enfoque?
¿Es posible obtener el vencimiento DateTime
de un objeto HttpRuntime.Cache
?¿Cómo puedo obtener el datetime de caducidad de un objeto HttpRuntime.Cache?
Si es así, ¿cuál sería el mejor enfoque?
Acabo de pasar por el System.Web.Caching.Cache en el reflector. Parece que todo lo que implica la fecha de caducidad está marcado como interno. El único lugar donde encontré acceso público fue a través de los métodos Cache.Add y Cache.Insert.
Parece que no tiene suerte, a menos que desee realizar una reflexión, que no recomendaría a menos que realmente necesite esa fecha.
Pero si desea hacerlo de todos modos, entonces aquí es un código que haría el truco:
private DateTime GetCacheUtcExpiryDateTime(string cacheKey)
{
object cacheEntry = Cache.GetType().GetMethod("Get", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(Cache, new object[] { cacheKey, 1 });
PropertyInfo utcExpiresProperty = cacheEntry.GetType().GetProperty("UtcExpires", BindingFlags.NonPublic | BindingFlags.Instance);
DateTime utcExpiresValue = (DateTime)utcExpiresProperty.GetValue(cacheEntry, null);
return utcExpiresValue;
}
¡has guardado mi tocino! ¡para este código! Nunca lo hubiera pensado porque no estoy familiarizado con el sistema. ¡Reflexión! – Rainhider
¿Por qué no se recomienda utilizar este método? ¿Carga todo el objeto de caché mientras lo mira? – Yovav
Me será muy útil si me proporciona los pasos para usar Reflector .. No puedo usar esta función porque da algún error. – SID
La memoria caché por sí sola no caduca. O puede tener elementos (que caducan) o no tener ningún elemento.
Usted no ha entendido la pregunta obviamente. – Softlion
@Softlion: ¿Por qué no respondes la pregunta, si tienes alguna? – shahkalpesh
Ya tiene una respuesta, solo estoy comentando mi voto negativo – Softlion
una manera desagradable es añadir fecha y hora de este objeto en un objeto de caché diferente y luego restar ese tiempo de vida con Date.Now(). – JerryGoyal