Подтвердить что ты не робот

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

Можно ли получить истечение DateTime объекта HttpRuntime.Cache?

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

4b9b3361

Ответ 1

Я просто прошел через 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;
}

Ответ 2

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