Использование MemoryCache с инициализацией HostFileChangeMonitor в каталоге приводит к исключению ArgumentOutOfRangeException.

Я использую MemoryCache из System.Runtime.Caching из .NET 4 и хочу аннулировать запись в кеше при изменении каталога.

HostFileChangeMonitor должен обрабатывать как файлы, так и каталоги, поэтому я добавляю его так:

var cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(30) };
cacheItemPolicy.ChangeMonitors.Add(new HostFileChangeMonitor(new List<string> { folder }));

но затем я получаю исключение:

System.ArgumentOutOfRangeException: The UTC time represented when the offset is applied must be between year 0 and 10,000.

Это происходит только в том случае, если я использую код на веб-сайте ASP.NET. Он отлично работает внутри консольного приложения.

Я нашел this в ms connect, но каталог, который я добавляю в HostFileChangeMonitor, существует.

Спасибо за вашу помощь.


person ador-mg    schedule 03.08.2012    source источник


Ответы (2)


Чтобы ответить на мой собственный вопрос:
кажется, что в 4.0 есть ошибка при добавлении каталогов в HostFileChangeMonitor.

person ador-mg    schedule 22.10.2012
comment
Мой обходной путь заключался в том, чтобы добавить файловые зависимости ко всем отдельным файлам каталога. Мое приложение также обрабатывало добавление и удаление файлов в папке, так что все получилось. Как только это будет исправлено в фреймворке, я переключусь на монитор каталогов, как и должно быть. - person ador-mg; 07.12.2012

Даже при просмотре одного файла ошибка все еще существует. Мы используем HostFileChangeMonitor со списком только из одного файла, и производственный сервер нашего клиента выдает это исключение. Мы рекомендуем исправление MS: https://support.microsoft.com/en-us/kb/2346777 Как только мы сможем подтвердить, что ошибка исчезла, я обновлю ответ.

person xautau    schedule 04.07.2016