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

Доступ к файлам случайно прерывается, возвращая ошибку 500.19 в IIS

У нас есть два веб-сервера под управлением IIS 8.5 на Windows Server 2012 R2. Два сервера расположены за балансировщиком нагрузки.

На веб-серверах запущено приложение ASP.NET MVC, которое, помимо прочего, позволяет пользователям получать доступ к файлам PDF. Эти файлы PDF расположены на третьем сервере, файловом сервере, и доступны для обоих веб-серверов через виртуальные каталоги. В каждом виртуальном каталоге есть несколько подкаталогов.

В настоящее время у нас возникают серьезные проблемы с доступом к файлам PDF. Доступ продолжает работать в течение многих дней, а затем внезапно что-то ломается, и мы получаем ошибку 500.19 всякий раз, когда кто-то пытается получить доступ к файлу pdf.
Обычно это происходит только на одном веб-сервере за раз и совершенно случайно. Когда возникают проблемы, единственное, что помогает, - это переработать пул приложений. До тех пор файлы PDF недоступны.

Еще один интересный факт заключается в том, что всякий раз, когда прерывается доступ, он прерывается только для определенных подкаталогов, в то время как другие все еще работают. Однако не всегда тот же подкаталог перестает работать, здесь тоже случайным образом.

Я посмотрел журнал и вот что получил:

2014-03-05 08:03:44 W3SVC2 [SERVER_NAME] [SERVER_IP] GET [PATH_TO_PDF] - 80 - [LOADBALANCER_IP] [USER_AGENT] [COOKIE] - 500 19 6 0 [ORIGINAL_CLIENT_IP]

Я также попытался активировать трассировку неудачных запросов, но на самом деле это не дает больше информации, чем журнал IIS.

Есть ли способ узнать, почему случайным образом прерывается доступ к файлам pdf (которые физически существуют, кстати - доступ со второго веб-сервера, когда первый выходит из строя)?

Ответ был найден благодаря Сэму Гулду, который связался со мной напрямую по электронной почте.

  1. Щелкните Редактор конфигурации на уровне сервера / компьютера.
  2. Выберите в раскрывающемся списке и разверните System.applicationHost
  3. выберите настройку сайтов
  4. Нажмите кнопку… в разделе "Коллекции".
  5. Выберите соответствующий веб-сайт и установите для параметра allowSubDirConfig значение False.
  6. Выполните сброс IIS

В качестве альтернативы мы также можем попробовать запустить команду appcmd:
C: \ Windows \ System32 \ inetsrv> appcmd.exe установить config -section: system.applicationHost / sites /[name='My_Website']]