And for those who wants the code to function in multiple different environments (sandbox using .NET 4.5 and production using .NET 4.7), here's some patch work:
I just went through the System.Web.Caching.Cache in reflector. It seems like everything that involves the expiry date is marked as internal. The only place i found public access to it, was through the Cache.Add and Cache.Insert methods.
So it looks like you are out of luck, unless you want to go through reflection, which I wouldn't recommend unless you really really need that date.
But if you wish to do it anyway, then here is some code that would do the trick:
Since .NET 4.5 the internal public getter of the HttpRuntime.Cache was replaced with a static variant and thus you will need to invoke/get the static variant:
object cacheEntry = Cache.GetType().GetMethod("Get").Invoke(null, new object[] { cacheKey, 1 });
As suggested by someone in comments that the accepted answer does not work in .NET 4.7
I had a lot of trouble trying to figure out what changes needs to be done to make it work in .NET 4.7
Here's my code for people using .NET 4.7
And for those who wants the code to function in multiple different environments (sandbox using .NET 4.5 and production using .NET 4.7), here's some patch work:
Cache by itself doesn't expire. Either it can have items (which expire) or not have any items at all.
I just went through the System.Web.Caching.Cache in reflector. It seems like everything that involves the expiry date is marked as internal. The only place i found public access to it, was through the Cache.Add and Cache.Insert methods.
So it looks like you are out of luck, unless you want to go through reflection, which I wouldn't recommend unless you really really need that date.
But if you wish to do it anyway, then here is some code that would do the trick:
Since .NET 4.5 the internal public getter of the
HttpRuntime.Cache
was replaced with a static variant and thus you will need to invoke/get the static variant: