Ответ 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;
}