Назад | Перейти на главную страницу

Веб-сайт IIS7 .NET задерживает обнаружение изменений файла на пути UNC

У меня возникла проблема, и мне не удалось найти никаких сообщений или документации, которые уже касаются этой конкретной проблемы.

Настройка:

Эта проблема связана с широко посещаемым веб-сайтом, написанным на .NET 3.5 и работающим на IIS7. Приложение использует поисковый индекс Lucene по пути UNC, заданному в файле Web.config приложения. Этот UNC-путь одинаков на всех 16 веб-серверах, и все они обращаются к одному и тому же индексу в одном месте. Приложение работает в классическом режиме (по сравнению с интегрированным) и использует удостоверение и олицетворение. У учетной записи достаточно разрешений. Все веб-серверы в настоящее время являются серверами Windows 2008, а общий файловый ресурс также является сервером Windows 2008 с SQL Server 2008. Серверы всегда находятся в конфигурации рабочей станции, а не в домене и без AD. У всех серверов есть одна основная учетная запись пользователя, настроенная одинаково с одинаковыми разрешениями и паролем.

История:

Эта установка годами работала нормально при нескольких конфигурациях. Недавно с веб-серверами под управлением Windows 2003 и IIS6, обращающимися к этому удаленному файловому ресурсу UNC на сервере Windows 2003 под управлением SQL Server 2005. И совсем недавно с веб-серверами под управлением Windows 2008 и IIS7, обращающимися к этому удаленному файловому ресурсу UNC в той же Windows 2003 с SQL как только что упоминалось. Проблема возникает только сейчас, после перемещения этого общего ресурса UNC на этот новый сервер Windows 2008 с SQL.

Эта проблема:

В настоящее время сайт работает нормально, и каждый веб-сервер имеет доступ к индексу и успешно использует индекс должным образом. Однако периодически (от 1 до 15 минут в зависимости от активности и синхронизированного обслуживания) файл «сегментов» Lucene удаляется и заменяется (он изменяется). Текущий файл, например "segment_xyz" заменяется на "segment_zyx". Не каждый раз это происходит, но в большинстве случаев приложение ищет предыдущий файл, а не текущий. Это приводит к исключению FileNotFoundException, и сообщается об ошибке .NET: System.IO.FileNotFoundException: не удалось найти файл '\ X.X.X.X \ Index \ 20101201 \ guid-x-x-x-x \ segment_zyx'. Это длится от 1 до 3 секунд и происходит на всех серверах. Это воспроизводимо, так как я могу получить доступ к сайту непосредственно на одном сервере, следить за изменением файла, и когда это произойдет, я могу обновить страницу и получить сообщение об ошибке в течение 1–3 секунд.

Некоторые моменты и теории:

Эта проблема вызывает 1000 ошибок в день. Надеюсь, у кого-то есть идеи? Буду бесконечно благодарен за любую помощь в этом вопросе!

Обновление: я нашел свое решение: http://technet.microsoft.com/en-us/library/ff686200(WS.10).aspx

Значение DirectoryCacheLifetime, равное нулю, решило проблему.