2008-12-05 14 views

Respuesta

23

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; 
} 
+0

¡has guardado mi tocino! ¡para este código! Nunca lo hubiera pensado porque no estoy familiarizado con el sistema. ¡Reflexión! – Rainhider

+0

¿Por qué no se recomienda utilizar este método? ¿Carga todo el objeto de caché mientras lo mira? – Yovav

+0

Me será muy útil si me proporciona los pasos para usar Reflector .. No puedo usar esta función porque da algún error. – SID

-3

La memoria caché por sí sola no caduca. O puede tener elementos (que caducan) o no tener ningún elemento.

+0

Usted no ha entendido la pregunta obviamente. – Softlion

+0

@Softlion: ¿Por qué no respondes la pregunta, si tienes alguna? – shahkalpesh

+0

Ya tiene una respuesta, solo estoy comentando mi voto negativo – Softlion

Cuestiones relacionadas