Как исправить ошибку «Обработчик "1C Web-service Extension" содержит поврежденный модуль "IsapiModule"» при публикации 1С на IIS?

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

При публикации баз данных платформы 1С:Предприятие на веб-сервере IIS (Internet Information Services) технические специалисты часто сталкиваются с ошибкой: «Обработчик "1C Web-service Extension" содержит поврежденный модуль "IsapiModule"». Эта проблема обычно сопровождается кодами состояния HTTP 500.21 или 500.0 и полностью блокирует доступ пользователей к базе через веб-клиент или веб-сервисы.

В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем спор участников форума о необходимости среды ASP.NET и пошагово настроим операционную систему Windows 10 (64-бит) для корректной работы веб-сервера с платформой 1С.

Разбор спора: Действительно ли для 1С нужен ASP.NET?

Обратим внимание на сообщения участников форума. Автор темы в сообщении №5 утверждает, что решил проблему установкой компонента ASP.NET в компонентах Windows. В ответ на это в сообщении №6 ему заявляют, что платформе 1С среда ASP.NET не требуется. Кто же прав?

В данном споре правы оба участника, но истина кроется в деталях системных зависимостей Windows:

Чтобы не перегружать операционную систему лишними службами и не устанавливать неиспользуемый ASP.NET, мы можем включить только те компоненты, которые действительно необходимы для работы 1С. Рассмотрим, как это сделать.

Шаг 1. Включение компонентов ISAPI в IIS

Выясним причину некорректной работы обработчика. По умолчанию при базовой установке IIS в Windows 10 модули ISAPI отключены. Нам необходимо активировать их вручную через панель управления.

  1. Откроем Панель управления на компьютере и перейдем в раздел «Программы» -> «Программы и компоненты».
  2. В левой колонке выберем пункт «Включение или отключение компонентов Windows».
  3. В открывшемся дереве компонентов найдем узел «Службы IIS» (Internet Information Services) и развернем его.
  4. Перейдем по пути: Службы IIS -> Службы интернета -> Компоненты разработки приложений.
  5. Установим флажки напротив следующих обязательных компонентов:
    • «Расширения ISAPI» (ISAPI Extensions)
    • «Фильтры ISAPI» (ISAPI Filters)
  6. Нажмем кнопку «ОК» и дождемся завершения процесса установки компонентов операционной системой, после чего перезагрузим компьютер или перезапустим службу IIS.

Шаг 2. Разрешение конфликта разрядности (32-bit vs 64-bit)

Если компоненты установлены, но ошибка сохраняется, проанализируем разрядность нашей системы. Автор темы указал, что использует Windows 10 64-бит и 1С 64-бит. В таких условиях критически важно соблюдать соответствие разрядности рабочего пула приложений IIS и разрядности используемой библиотеки wsisapi.dll.

Разберем детально два сценария настройки пула приложений IIS:

  1. Если используется 64-битная платформа 1С:

    Библиотека расширения загружается по пути: C:\Program Files\1cv8\[ВерсияПлатформы]\bin\wsisapi.dll. В этом случае нам нужно зайти в Диспетчер служб IIS, выбрать раздел «Пулы приложений», кликнуть правой кнопкой мыши на пул, используемый вашей публикацией (по умолчанию это DefaultAppPool), и открыть «Дополнительные параметры». Параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications) должен быть обязательно установлен в значение False.

  2. Если используется 32-битная платформа 1С на 64-битной Windows:

    Библиотека находится по пути: C:\Program Files (x86)\1cv8\[ВерсияПлатформы]\bin\wsisapi.dll. В дополнительных параметрах пула приложений IIS свойство «Разрешить 32-разрядные приложения» необходимо перевести в значение True.

Если разрядность пула приложений не соответствует разрядности библиотеки, IIS не сможет запустить поток и вернет ошибку повреждения модуля.

Шаг 3. Настройка ограничений ISAPI и CGI на сервере IIS

Для обеспечения безопасности IIS блокирует запуск любых сторонних динамических библиотек, если они не внесены в список доверенных. Нам необходимо явно разрешить выполнение библиотеки 1С на сервере:

  1. Откроем Диспетчер служб IIS и выделим левой кнопкой мыши самый верхний элемент дерева подключений — имя нашего сервера.
  2. В центральной части окна (в режиме просмотра фич) найдем и откроем дважды кликнув раздел «Ограничения ISAPI и CGI» (ISAPI and CGI Restrictions).
  3. В панели «Действия» справа нажмем кнопку «Добавить...».
  4. В поле «Путь к ISAPI или CGI-файлу» укажем полный путь к файлу wsisapi.dll, который соответствует разрядности и версии нашей рабочей платформы. Например: C:\Program Files\1cv8\8.3.22.1709\bin\wsisapi.dll.
  5. В поле «Описание» введем понятное имя, например, 1C Web Extension, установим галочку «Разрешить выполнение пути расширения» и нажмем «ОК».

Шаг 4. Проверка путей в конфигурационном файле web.config

Часто ошибка возникает после обновления платформы 1С:Предприятие, когда старая версия удаляется, а веб-сервер продолжает искать библиотеку по прежнему пути. Проверим конфигурационный файл публикации.

Перейдем в каталог физического расположения нашей публикации (путь к этой папке указывается при публикации базы из конфигуратора 1С). Найдем там файл web.config и откроем его с помощью любого текстового редактора. Проанализируем структуру секции обработчиков:


<configuration>
    <system.webServer>
        <handlers>
            <add name="1C Web-service Extension" 
                 path="*.1cws" 
                 verb="*" 
                 modules="IsapiModule" 
                 scriptProcessor="C:\Program Files\1cv8\8.3.22.1709\bin\wsisapi.dll" 
                 resourceType="Unspecified" 
                 requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>

Убедимся, что значение атрибута scriptProcessor содержит абсолютно точный и актуальный путь к файлу wsisapi.dll. Если версия платформы в пути устарела, исправим ее вручную на актуальную и сохраним файл. Для автоматизации настройки и регулярного обновления параметров баз можно использовать инструмент для управления веб-публикациями 1С.

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

Рабочие процессы IIS функционируют в операционной системе от имени служебных учетных записей. По умолчанию это группа пользователей IIS_IUSRS или встроенный пользователь IUSR. Если у данных учетных записей нет прав на чтение и запуск библиотек 1С, IIS выдаст ошибку о повреждении модуля.

Настроим права доступа по шагам:

  1. Перейдем к папке с установленной платформой 1С (например, C:\Program Files\1cv8\).
  2. Нажмем правой кнопкой мыши по папке 1cv8, выберем «Свойства» и перейдем на вкладку «Безопасность».
  3. Нажмем кнопку «Изменить», затем «Добавить». В поле ввода имен выбираемых объектов введем IIS_IUSRS, нажмем «Проверить имена» и подтвердим выбор.
  4. Для добавленной группы пользователей в списке разрешений обязательно отметим галочками пункты «Чтение и выполнение» (Read & Execute), «Список содержимого папки» и «Чтение». Нажмем «Применить».
  5. Повторим аналогичную процедуру настройки прав безопасности для каталога, в котором физически расположена наша веб-публикация базы (где находятся файлы default.vrd и web.config). Здесь группе IIS_IUSRS также можно предоставить права на запись, если планируется использование логов или локальных файлов настроек.

Шаг 6. Распространяемые пакеты Microsoft Visual C++

Библиотека wsisapi.dll разработана с использованием компонентов C++. Если на сервере или рабочем компьютере с Windows 10 отсутствуют актуальные библиотеки среды выполнения Microsoft Visual C++ Redistributable, операционная система не сможет корректно инициализировать модуль.

Для решения этой проблемы рекомендуется скачать с официального сайта Microsoft и установить пакеты Visual C++ Redistributable для архитектур x86 и x64. Рекомендуется устанавливать версии, соответствующие году выпуска вашей платформы 1С (обычно это пакеты Visual Studio 2015–2022).

После выполнения всех описанных шагов перезапустите службу веб-сервера IIS. Сделать это можно через консоль администрирования IIS (действие «Перезапуск» на узле сервера) либо через командную строку, запущенную от имени администратора, выполнив команду iisreset. Публикация базы 1С начнет работать в штатном режиме без ошибок.

← На главную