MemoryCache Wh пустой: возвращает NULL после установки

У меня есть проблема с приложением MVC 3, которое использует New System. System.runtime.Caching MemoryCache. Я замечаю, что после, казалось бы, непредсказуемое время, он перестает кэшировать вещи и действует, как буднее. Рассмотрим этот бит кода, который я сделал прямо с точки зрения просмотра в ASP.NET MVC:

MemoryCache.Default.Set("myname","fred", new CacheItemPolicy() { SlidingExpiration = new TimeSpan(0,5,0) });
Response.Write(MemoryCache.Default["myname"]);

, когда он работает, предсказуемый «Фред». Однако, когда проблема начинает происходить, несмотря на множество , значение , значение MemoryCache.default [«myName»] - это нулевой. Я могу доказать это, установив точку останова на ответе . Настройка () Line и напрямую настройку и чтение от кэша с использованием немедленного окна - он просто не будет установлен и остается NULL! Единственный способ получить его снова, чтобы потом вызвать рециркулировать appdomain.

Интригативно я могу провоцировать проблему, когда приложение работает нормально, нарушая на RACKS.WRITE () Линия и работает MemoryCache.default.dispose () . После этого MemoryCache.default не нулевой сам (почему это?), Но не спасит ничего, что на нем. Это не вызывает никаких ошибок, но просто ничего не сохранит.

Может кто-нибудь проверить это и объяснить? Как я полагаю, я обнаружил, когда приложение перестает работать самостоятельно, что-то утилизируется MemoryCache.default , но это не я!


Обновление

Ну, я устал от этого проб сейчас! CLRPROFILER, похоже, не работает с MVC 3. Инструмент CLR SCITECH был хорошим - так было Redgate муравьи. Но все, что они сказали мне, это то, что объект MemoryCache утилизируется что-то ! Я также доказал (через печати Timestamp), что PartialView на моей странице, который должен быть кэширован (задан выводомCACHEATTRIBUTE), останавливается, останавливается после нескольких минут - он начинает обновляться с каждым вызовом на страницу. Просто чтобы уточнить окружающую среду, я бегу прямо на сервере IIS 7.5 на моей рабочей станции разработки Win 7 Ultimate. Указанные выше инструменты памяти предполагают, что я использую только около 9 МБ памяти с точки зрения объектов в игре.

В отчаянии я изменил свой код кэширования для первого поиска окружающей среды httpcontext для подключения к функциональности и использовать его функциональность кэширования, если их доступно. Ранние тесты показывают, что это надежно, но ощущается как неприятный удар.

Получаю ощущение, что MemoryCache и Outchancache не оправдано работать с MVC 3 ...

51
задан James McCormack 2 June 2014 в 21:52
поделиться