Как исправить ошибку HTTP Error 500.21 - IsapiModule при публикации базы 1С на IIS?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

При развертывании веб-сервисов 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С.

Шаг 1. Активация необходимых компонентов IIS и ASP.NET

Рассмотрим подробнее процесс включения нужных ролей сервера. Часто администраторы ограничиваются установкой «голого» IIS, чего недостаточно для работы 1С. Нам необходимо убедиться, что установлены компоненты разработки приложений. Выполним следующие действия:

  1. Откроем Диспетчер серверов (Server Manager).
  2. Перейдем в меню «Управление» и выберем «Добавить роли и компоненты».
  3. Дойдем до раздела «Роли сервера» и развернем узел «Веб-сервер (IIS)».
  4. Внутри выберем подраздел «Веб-сервер», а затем — «Разработка приложений».
  5. Здесь критически важно отметить следующие пункты:
    • ASP.NET 4.7/4.8 (в зависимости от версии системы);
    • Расширения ISAPI (ISAPI Extensions);
    • Фильтры ISAPI (ISAPI Filters).
  6. Завершим установку компонентов и перезапустим службу IIS.

Без включения ISAPI Extensions модуль 1С не сможет инициализироваться, что и приводит к ошибке 500.21. Если сервер уже был настроен, но компоненты были добавлены позже, иногда требуется выполнить принудительную перерегистрацию инфраструктуры .NET.

Шаг 2. Проверка разрядности пула приложений

Посмотрим на ситуацию со стороны архитектуры платформы. Если вы используете 64-битную версию платформы 1С, крайне важно, чтобы пул приложений IIS работал в соответствующем режиме. Разберем по шагам настройку пула:

  1. Запустим консоль управления IIS (inetmgr).
  2. Перейдем в раздел «Пулы приложений» (Application Pools).
  3. Найдем пул, который используется для вашей публикации (по умолчанию это DefaultAppPool).
  4. Нажмем на него правой кнопкой мыши и выберем «Дополнительные параметры» (Advanced Settings).
  5. Найдем параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications). Для 64-битной платформы 1С это значение должно быть False. Если же вы используете 32-битную платформу на 64-битной ОС, установите True.
  6. Убедимся, что «Режим конвейера управляемого кода» (Managed Pipeline Mode) установлен в значение Integrated.

Проанализируем этот момент: если 64-битный модуль wsapiex.dll пытается загрузиться в пуле, настроенном на 32 бита, система выдаст ошибку модуля, так как библиотеки разной разрядности не могут сосуществовать в одном адресном пространстве процесса w3wp.exe.

Шаг 3. Регистрация ASP.NET через командную строку

В некоторых случаях, даже при наличии установленных компонентов, конфигурация 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.

Шаг 4. Настройка разрешений ISAPI и CGI

Даже если компоненты установлены, безопасность IIS может блокировать запуск сторонних библиотек. Проверим глобальные ограничения сервера:

  1. В консоли IIS выберите корень сервера (имя вашего сервера в дереве слева).
  2. В центральной части откройте раздел «Ограничения ISAPI и CGI» (ISAPI and CGI Restrictions).
  3. Убедитесь, что в списке присутствует путь к вашей библиотеке wsapiex.dll (она находится в папке bin установленной платформы 1С).
  4. Если записи нет, добавьте ее вручную, указав путь к файлу и установив галочку «Разрешить выполнение пути расширения».

Без этого разрешения IIS будет блокировать любые попытки 1С перехватить запрос, считая это потенциальной угрозой безопасности.

Шаг 5. Права доступа к файловой системе

Разберем еще один неочевидный аспект — права доступа. Веб-сервер IIS работает под учетной записью специального пользователя или пула приложений. Если у этого пользователя нет прав на чтение и выполнение файлов из каталога установки 1С, вы получите ошибку 500.21 или 500.19. Рекомендуется:

  1. Зайти в папку C:\Program Files\1cv8\ (или ту, где установлена платформа).
  2. В свойствах папки на вкладке «Безопасность» добавить группу «IIS_IUSRS».
  3. Предоставить этой группе права на «Чтение» и «Чтение и выполнение».

Это позволит рабочему процессу IIS беспрепятственно загружать необходимые библиотеки платформы для обработки входящих HTTP-запросов — для этого есть модуль логирования и анализа HTTP-запросов к API 1С.

Шаг 6. Особенности работы с SSL и TLS

Если ошибка возникает именно при переходе на 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 — для быстрого запуска обмена через веб-сервисы есть решение для автоматического обмена через веб-сервисы.

← На главную