У меня есть проблема с приложением 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 ...