При развертывании веб-сервисов 1С на современных операционных системах, таких как Windows Server 2022, системные администраторы часто сталкиваются с ошибкой HTTP Error 500.21 - Internal Server Error — для надежной работы такого взаимодействия есть инструмент обмена данными через веб-сервисы. Сообщение уточняет, что обработчик 1C Web-service Extension содержит «плохой» модуль IsapiModule в своем списке модулей. Эта ситуация может поставить в тупик, особенно когда все базовые инструкции по публикации кажутся выполненными, а установка сертификатов SSL и переход на HTTPS только добавляют вопросов. В рамках данной статьи мы подробно разберем, почему возникает эта ошибка и как поэтапно настроить сервер для корректной работы 1С:Предприятия.
Для начала проанализируем ситуацию: почему IIS (Internet Information Services) жалуется на IsapiModule? Проблема заключается в том, что в стандартной конфигурации веб-сервера IIS в новых версиях Windows Server многие компоненты, отвечающие за обратную совместимость и выполнение внешних расширений, отключены по умолчанию. 1С:Предприятие при публикации на IIS использует библиотеку wsapiex.dll, которая работает через технологию ISAPI (Internet Server Application Programming Interface). Если в роли веб-сервера не активированы соответствующие расширения, IIS просто «не знает», что такое IsapiModule, и не может запустить обработчик 1С.
Рассмотрим подробнее процесс включения нужных ролей сервера. Часто администраторы ограничиваются установкой «голого» IIS, чего недостаточно для работы 1С. Нам необходимо убедиться, что установлены компоненты разработки приложений. Выполним следующие действия:
Без включения ISAPI Extensions модуль 1С не сможет инициализироваться, что и приводит к ошибке 500.21. Если сервер уже был настроен, но компоненты были добавлены позже, иногда требуется выполнить принудительную перерегистрацию инфраструктуры .NET.
Посмотрим на ситуацию со стороны архитектуры платформы. Если вы используете 64-битную версию платформы 1С, крайне важно, чтобы пул приложений IIS работал в соответствующем режиме. Разберем по шагам настройку пула:
DefaultAppPool).Проанализируем этот момент: если 64-битный модуль wsapiex.dll пытается загрузиться в пуле, настроенном на 32 бита, система выдаст ошибку модуля, так как библиотеки разной разрядности не могут сосуществовать в одном адресном пространстве процесса w3wp.exe.
В некоторых случаях, даже при наличии установленных компонентов, конфигурация ASP.NET может быть повреждена. В старых версиях Windows мы использовали утилиту aspnet_regiis.exe -i, но в Windows Server 2022 этот метод заменен на работу с DISM или PowerShell. Если ошибка 500.21 сохраняется, попробуем активировать инфраструктуру принудительно. Запустим PowerShell от имени администратора и выполним команду:
Install-WindowsFeature Web-Asp-Net45
Эта команда гарантирует, что все связки между IIS и .NET Framework 4.x (включая версию 4.8, актуальную для Server 2022) корректно настроены и зарегистрированы в метабазе IIS.
Даже если компоненты установлены, безопасность IIS может блокировать запуск сторонних библиотек. Проверим глобальные ограничения сервера:
wsapiex.dll (она находится в папке bin установленной платформы 1С).Без этого разрешения IIS будет блокировать любые попытки 1С перехватить запрос, считая это потенциальной угрозой безопасности.
Разберем еще один неочевидный аспект — права доступа. Веб-сервер IIS работает под учетной записью специального пользователя или пула приложений. Если у этого пользователя нет прав на чтение и выполнение файлов из каталога установки 1С, вы получите ошибку 500.21 или 500.19. Рекомендуется:
C:\Program Files\1cv8\ (или ту, где установлена платформа).Это позволит рабочему процессу IIS беспрепятственно загружать необходимые библиотеки платформы для обработки входящих HTTP-запросов — для этого есть модуль логирования и анализа HTTP-запросов к API 1С.
Если ошибка возникает именно при переходе на HTTPS, как упоминал автор темы, стоит обратить внимание на привязки (Bindings). При использовании самоподписанных сертификатов, созданных через OpenSSL, важно правильно указать IP-адрес в привязках сайта. Рассмотрим пример: если привязка сделана на конкретный внешний IP, а запрос идет по внутреннему имени (или наоборот), IIS может некорректно обрабатывать сессию. Попробуйте в настройках привязки (Bindings) установить IP-адрес в значение «Все свободные» (All Unassigned), если это допустимо вашей политикой безопасности.
Что касается настройки протоколов TLS 1.1 и TLS 1.2 в реестре, о которых говорилось в сообщениях форума, то в Windows Server 2022 протокол TLS 1.2 включен по умолчанию. Однако, если вы сталкиваетесь с обрывами соединений при передаче больших объемов данных, можно проверить ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\
Если разделов TLS 1.2\Server не существует, их можно создать вручную и добавить параметр DisabledByDefault со значением 0, но, как показывает практика, для решения ошибки IsapiModule это требуется крайне редко. Основная причина почти всегда кроется в компонентах ISAPI и разрядности пула.
Подводя итог, для устранения ошибки 500.21 на Windows Server 2022 необходимо в первую очередь убедиться, что роль веб-сервера включает в себя «Расширения ISAPI», а пул приложений настроен на 64-битную работу (для 64-битной 1С). Совместное выполнение этих шагов гарантирует стабильную публикацию базы 1С на веб-сервере IIS без необходимости перехода на альтернативные решения вроде Apache — для быстрого запуска обмена через веб-сервисы есть решение для автоматического обмена через веб-сервисы.