c# - getorcreate - Как я могу получить время истечения срока действия объекта HttpRuntime.Cache?



asp net mvc 5 memory cache (2)

Кэш сам по себе не истекает. Либо у него могут быть предметы (которые истекают), либо вообще не имеют предметов.

https://ffff65535.com

Возможно ли получить срок действия DateTime объекта HttpRuntime.Cache ?

Если да, то какой будет лучший подход?


Я просто прошел через System.Web.Caching.Cache в рефлекторе. Кажется, что все, что связано с датой истечения срока действия, обозначается как внутреннее. Единственное место, где я нашел открытый доступ к нему, - это методы Cache.Add и Cache.Insert.

Похоже, вам не повезло, если вы не хотите пройти через размышления, которые я бы не рекомендовал, если вам действительно не нужна эта дата.

Но если вы все равно это сделаете, то вот какой-то код, который бы сделал трюк:

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




caching