Вопрос или проблема
Я столкнулся с странной проблемой, которую не смог решить и не нашел информации: узлы Пулы приложений и Сайты в IIS Manager нашего IIS 8.5 исчезли!
Это один из четырех серверов с очень похожей настройкой, но это единственный с Windows Server 2012 R2 и IIS 8.5: у нас есть стандартные пулы приложений плюс один для нашего приложения, и наш сайт и веб-приложение, которое использует наш пул приложений. Все работало хорошо до воскресенья, 1 июня 2014 года, когда мы получили сообщение об ошибке от нашей службы мониторинга о том, что наше приложение недоступно на этом сервере.
Мы обнаружили следующие записи в журнале событий:
[20:44:24] Рабочий процесс '27520', обслуживающий пул приложений 'camping.info', не удалось остановить канал слушателя для протокола 'http' в отведенное время. Поле данных содержит номер ошибки.
[20:44:24] Процесс, обслуживающий пул приложений 'camping.info', превысил ограничения времени во время завершения работы. Идентификатор процесса был '27520'.
[20:45:54] Рабочий процесс '40744', обслуживающий пул приложений 'camping.info', не удалось остановить канал слушателя для протокола 'http' в отведенное время. Поле данных содержит номер ошибки.
[20:45:54] Процесс, обслуживающий пул приложений 'camping.info', превысил ограничения времени во время завершения работы. Идентификатор процесса был '40744'.
[20:45:54] Пул приложений 'camping.info' автоматически отключается из-за серии сбоев в процессе(ах), обслуживающем этот пул приложений.
Когда мы подключились к серверу по RDP и заглянули в IIS Manager, узлы Пулы приложений и Сайты больше не отображались. Вместо этого журнал событий был полон ошибок, подобных следующим (в результате попытки открыть Узел сервера ниже Стартовая страница):
IISMANAGER_ERROR_LOADING_PROVIDER_TYPE
IIS Manager не удалось загрузить тип 'Microsoft.Web.Management.AspNet.SessionState.SessionStateModuleProvider, Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' для модуля-поставщика 'SessionState', который объявлен в %windir%\system32\inetsrv\config\administration.config. Убедитесь, что тип верный и сборка, содержащая модуль-поставщик, находится в кэше глобальных сборок (GAC).
Исключение:System.IO.FileNotFoundException: Не удалось загрузить файл или сборку 'Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' или одну из ее зависимостей. Система не может найти указанный файл.
Имя файла: 'Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
в System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
в System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
в System.Type.GetType(String typeName, Boolean throwOnError)
в Microsoft.Web.Management.Server.AdministrationModuleProvider.GetModuleProvider(String userName, String connectionName)
После нескольких попыток восстановить рабочую конфигурацию iis (C:\Windows\System32\inetsrv\Config\applicationhost.config) мы даже полностью удалили IIS и переустановили его (с некоторыми трудностями), но безрезультатно. Ища недостающие dll на диске, мы обнаружили, что их версии были на самом деле 8.5.. Поэтому мы заменили все вхождения 8.0.0.0 на 8.5.0.0 в C:\Windows\System32\inetsrv\Config\administration.config, но ошибки остались (по-прежнему упоминали 8.0.0.0!).
Интересно, что наше приложение снова работает на сервере – просто мы не можем его видеть в IIS Manager. Мы хотели бы иметь возможность управлять им через графический интерфейс и избавиться от этих ошибок в журнале событий.
Есть желающие помочь?
Наконец, я решил эту проблему для своей ситуации:
У меня, похоже, был поврежден файл applicationhost.config, возможно, из-за msdeploy и/или Visual Studio 2012. Хотя он выглядел нормально. Но после тщательного сравнения я заметил, что он помещает (сайты) (/sites) не на то место, и дерево в IIS Manager не отображалось.
Перемещение секции сайтов обратно на место решило проблему. (прямо после секции (/log))
В остальном MSdeploy работал нормально, просто испортил вид сайта в IIS Manager.
Это случилось только на серверах, где сайты были развернуты через VS2012 и msdeploy с 2012R2, работающим на IIS8.5
Когда вы деинсталлировали IIS, вы удалили все в C:\Windows\System32\inetsrv
? Если нет, то сломанные вещи могли остаться там.
Не уверен, если это так в данном случае, но для похожей ситуации, с которой я столкнулся на наших системах, это было просто несовпадение версий.
т.е. Сервер, изначально создающий общую конфигурацию, был Server 2012 с IIS 8.0, но сервер, пытающийся получить доступ к ней и проявляющий упомянутые симптомы, был Server 2012 R2 с IIS 8.5.
Посмотрите в журнал событий после загрузки IIS Manager, и вы должны увидеть много ошибок, указывающих, что это проблема с недостающим модулем, вероятно, связанной с версионностью.
В моем случае я работал над настройкой нового сервера Windows 2019, чтобы заменить свой сервер Windows 2012 R2. Я начал устанавливать все функции и роли для веб-служб и вернулся к серверу позже. Я предположил, что веб-службы были полностью установлены.
У меня была копия резервной конфигурации с старого сервера (Backup-WebConfiguration -Name [backupname], скопирована с c:\windows\system32\inetsrv\backup\ в каталог резервных копий нового сервера, затем выполнена команда Restore-WebConfiguration -Name [backupname].)
Однако IIS не был полностью установлен, так как перезагрузка была ожидающей, поэтому я перезагрузил серверы и убедился, что все функции и роли установлены. Когда я открыл IIS, секция Сайты не отображалась. Заглянув в журналы приложений Windows, я нашел много ошибок “IISMANAGER_ERROR_LOADING_PROVIDER_TYPE”.
Конкретные типы, которые были в беспокойстве, все начинались с “Microsoft.Web.Management.” и имели версию 8.5. Ссылка на тип находилась в файле c:\windows\system32\inetsrv\config\application.config.
Это заставило меня вспомнить, что Win 2012R2 использует версию IIS 8.5, а Windows 2019 использует версию IIS 10.0.
Я вошел в файл application.config и выполнил поиск и замену 8.5, заменив ее на 10.0.
После сброса IIS мой IIS Manager снова стал отображать Пулы приложений и Сайты и все другие функции, которые я ожидал увидеть.
Я увидел еще несколько ошибок типа в журнале приложений, но это было связано с тем, что я еще не установил модуль/дополнение IIS на новом сервере.
Также я выполнил сравнение версий модулей в рабочем файле application.config Windows Server 2019 и смог удостовериться, что версии одинаковы на обоих серверах. Были некоторые типы Microsoft.Web.Management, которые были для версии 7.0.0.0, также.
Попробуйте переустановить IIS из компонентов Windows (Панель управления –> Программы и компоненты).
Для моего решения я смог вручную воссоздать директорию, добавить сайт с тем же именем.
(виртуальная директория в этом случае, затем я преобразовал его в приложение)
После этого я изменил пул приложений на тот, который был “заединившимся”
На этом этапе он показывал только 1 ассоциированное приложение, а не два.
Я удалил приложение с сервера, и оно также удалилось из пула приложений.
Ответ или решение
Проблема: Отсутствие узлов "Пулы приложений" и "Сайты" в IIS 8.5
Если вы столкнулись с ситуацией, когда в IIS Manager отсутствуют узлы "Пулы приложений" и "Сайты", как это произошло на вашем сервере с Windows Server 2012 R2 и IIS 8.5, необходимо провести систематическое обследование причины проблемы и её решения. Проблема может быть связана как с настройками самого IIS, так и с некорректной конфигурацией файлов.
Основные симптомы
- Отсутствие узлов: При попытке открыть IIS Manager вы не видите узлы "Пулы приложений" и "Сайты".
- Ошибки в журнале:
- Ошибка
IISMANAGER_ERROR_LOADING_PROVIDER_TYPE
. - Указание на отсутствующие версии сборок, например,
Microsoft.Web.Management.Aspnet, Version=8.0.0.0
.
- Ошибка
Эти ошибки могут свидетельствовать о наличии конфликта версий компонентов или повреждении конфигурационных файлов.
Возможные причины
- Конфликтующие версии: Если ваш сервер использует IIS 8.5, но конфигурационные файлы ссылаются на сборки версии 8.0.0.0, это может вызвать конфликт.
- Повреждение конфигурационных файлов: Конфигурация IIS может быть повреждена, что могло произойти, например, из-за неправильных изменений при использовании
msdeploy
или других инструментов.
Решения
Вот несколько шагов, которые могут помочь в восстановлении функциональности IIS Manager:
-
Проверка конфигурационных файлов:
- Сравните файл
applicationhost.config
, находящийся вC:\Windows\System32\inetsrv\Config\
, с резервной копией, чтобы убедиться, что узлы "Сайты" и "Пулы приложений" находятся в правильных секциях. - Убедитесь, что секция
</sites>
находится сразу после</logs>
.
- Сравните файл
-
Переустановка IIS:
- Если вы переустанавливали IIS, убедитесь, что все компоненты были удалены, включая содержимое
C:\Windows\System32\inetsrv
. Возможно, потребуется ручное удаление некоторых файлов.
- Если вы переустанавливали IIS, убедитесь, что все компоненты были удалены, включая содержимое
-
Обновление и правка конфигурационных файлов:
- Обновите все упоминания о версиях 8.0.0.0 до 8.5.0.0, но будьте осторожны, изменения в
administration.config
могут не решить проблему, если нет соответствующих сборок. - Если имеете доступ к исправным системам, сравните версии компонентов, чтобы убедиться в их согласованности.
- Обновите все упоминания о версиях 8.0.0.0 до 8.5.0.0, но будьте осторожны, изменения в
-
Загрузка необходимых модулей:
- Если ставились дополнительные модули, убедитесь, что они установлены и соответствуют версии вашего IIS. Например, проверьте, все ли необходимые функции IIS установлены через Панель управления.
-
Переустановка компонентов IIS:
- Используйте "Установка Windows" через Панель управления (Control Panel → Programs and Features) для удаления и последующей переустановки всех компонентов IIS. Убедитесь, что после переустановки система перезагружена.
Вывод
Проблема отсутствия узлов "Пулы приложений" и "Сайты" в IIS Manager может быть вызвана множеством факторов, включая конфликты версий и поврежденные конфигурационные файлы. Следует провести тщательное обследование конфигурации и, при необходимости, выполнить переустановку компонентов IIS. В случае повторяющихся проблем возможно потребуется обратиться к документации Microsoft или к технической поддержке для дальнейшей помощи.