ОК, думаю, я понял это, но я не совсем уверен, почему это так:
Я сделал так, как вы оба предложили - из кеша определенно ничего не читалось, поэтому я написал обратный вызов, который записал время удаления в файл журнала и подписал его на событие expiry. Я также записал время добавления каждого элемента в кэш в один и тот же журнал, чтобы я мог видеть, как долго они там хранятся.
После того, как я изначально присвоил значение Cache в коде, был цикл, в котором я назначал новое значение одному и тому же объекту на каждой итерации, используя:
Cache["TEST_VALUE"] = counter;
Однако с этим синтаксисом, как только это произошло, файл журнала показал, что элемент был удален из кэша, хотя он все еще был доступен на отдельной странице, которая только что записала значения кэшированных объектов?
Я не понимаю, почему это так - я понял, что приведенный выше синтаксис просто обновит значение объекта в кеше, но, может быть, я ошибаюсь?
Возиться, я изменил код так, чтобы вышеприведенная строка в цикле теперь читалась:
Cache.Insert("TEST_VALUE", newvalue, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(120));
И теперь в журнале я получаю то же самое уведомление об удалении, за которым немедленно следует другое уведомление о добавлении, и срок действия элемента истекает правильно через 120 (иш) секунд, и он больше недоступен с других страниц.
Я очень смущен, но спасибо за вашу помощь:)