Ошибка IIS "HTTP Error 500.19 - Internal Server Error" (DynamicCompressionModule 0x8007007e) после удаления роли Windows Server Update Services (WSUS) на Windows Server 2012 R2

WSUS uninstall IIS error 500Если на сервере с ОС Windows Server 2012 R2 и установленной ролью Windows Server Update Services (WSUS) в конфигурации веб-сервера IIS помимо сайта WSUS Administration имеются какие-либо другие сайты, то после удаления роли WSUS эти сайты могут перестать работать. Рассмотрим эту проблему и способ её решения.

После выполнения стандартной процедуры удаления роли WSUS через консоль Server Manager замечено, что все сайты, работающие на базе веб-сервера IIS перестали штатно работать, возвращая всем клиентам, подключающимся из локальной сети, ошибку "500 - Intenal server error"

IIS error 500 - Intenal server error

Чтобы получить больше информации об ошибке, выполняем открытие сайта локально на самом веб-сервере и видим, что ошибка 500.19 связана с модулем сжатия DynamicCompressionModule и имеет код 0x8007007e

IIS DynamicCompressionModule error 500.19 code 0x8007007e

Иногда при решении подобного рода проблем дополнительную ясность может дать получение описания кода ошибки. Полученный в нашем случае код ошибки 0x8007007e можно попробовать расшифровать штатными инструментами Windows:

  • с помощью утилиты командной строки net, например так:
net helpmsg 0x8007007e
  • с помощью PowerShell, например так:
[ComponentModel.Win32Exception]0x8007007e

В нашем случае первый вариант не дал результата, зато метод с использованием PowerShell вернул описание кода ошибки.

Windows error code lookup with Powershell or Net

Теперь становится понятно, что работе всех сайтов в IIS мешает ошибка в механизме сжатия, которая связана с отсутствием/недоступностью какого-то модуля.

После дальнейшего изучения ситуации стало очевидно, что роль WSUS после удаления оставила в системе немало "мусора". В частности в IIS не был удалён сайт WSUS Administration и связанный с ним пул приложений WsusPool, а виртуальные каталоги этого сайта ссылались на уже несуществующие в системе файловые пути. Ручное удаление этих "ошмётков" из консоли IIS Manager не купировало проблемы с 500 ошибкой веб-сервера.

Далее по совету страницы с подробным описанием ошибки мы заглянули в конфигурационный файл applicationHost.config, расположенный в каталоге C:\Windows\System32\inetsrv\config.

Обнаружилось, что в разделе глобальной конфигурации хоста configuration > system.webServer > httpCompression присутствует объект типа scheme с именем "xpress", ссылающийся на уже несуществующую в системе библиотеку C:\Program Files\Update Services\WebServices\suscomp.dll

IIS applicationHost.config Windows Update compression

Судя по всему, это тот самый проблемный модуль сжатия, на отсутствие которого ругается веб-сервер IIS.

Удаляем строку, описывающую проблемную схему "xpress", оставив только схему "gzip" с вызовом имеющейся в системе библиотеки gzip.dll и сохраняем изменения в файле.

applicationHost.config gzip http compression

Сразу после этого сайты в IIS заработали, как ни в чём не бывало.

Вот такой вот нежный IIS и такой вот злой WSUS :)

Всего комментариев: 3 Комментировать

  1. Владимир /

    Спасибо огромное, рецепт сработал чудодейственно.

  2. late_mc /

    Все сработало. Топ решение !

  3. Алексей /

    Спасибо, помогло, даже не знал куда копать.

Добавить комментарий