Внутри события Application_End все объекты кэша уже расположены.
Если вы хотите получить доступ к объекту кэша до его удаления, вам нужно использовать нечто подобное, чтобы добавить объект в кэш:
Импорт пространства имен System.Web.Caching в ваше приложение, где вы используете добавление объектов в кеш.
//Add callback method to delegate
var onRemove = new CacheItemRemovedCallback(RemovedCallback);
//Insert object to cache
HttpContext.Current.Cache.Insert("YourKey", YourValue, null, DateTime.Now.AddHours(12), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, onRemove);
И когда этот объект будет утилизирован, будет вызван следующий метод:
private void RemovedCallback(string key, object value, CacheItemRemovedReason reason)
{
//Use your logic here
//After this method cache object will be disposed
}
Пожалуйста, дайте мне знать, если этот подход вам не подходит.
Надеюсь, что это поможет вам с вашим вопросом.
С уважением, Дима.