При публикации баз данных платформы 1С:Предприятие на веб-сервере IIS (Internet Information Services) технические специалисты часто сталкиваются с ошибкой: «Обработчик "1C Web-service Extension" содержит поврежденный модуль "IsapiModule"». Эта проблема обычно сопровождается кодами состояния HTTP 500.21 или 500.0 и полностью блокирует доступ пользователей к базе через веб-клиент или веб-сервисы.
В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем спор участников форума о необходимости среды ASP.NET и пошагово настроим операционную систему Windows 10 (64-бит) для корректной работы веб-сервера с платформой 1С.
Обратим внимание на сообщения участников форума. Автор темы в сообщении №5 утверждает, что решил проблему установкой компонента ASP.NET в компонентах Windows. В ответ на это в сообщении №6 ему заявляют, что платформе 1С среда ASP.NET не требуется. Кто же прав?
В данном споре правы оба участника, но истина кроется в деталях системных зависимостей Windows:
wsisapi.dll, работающую напрямую через интерфейс ISAPI. Среда выполнения .NET и ASP.NET платформе 1С для публикации баз не нужны.Чтобы не перегружать операционную систему лишними службами и не устанавливать неиспользуемый ASP.NET, мы можем включить только те компоненты, которые действительно необходимы для работы 1С. Рассмотрим, как это сделать.
Выясним причину некорректной работы обработчика. По умолчанию при базовой установке IIS в Windows 10 модули ISAPI отключены. Нам необходимо активировать их вручную через панель управления.
Службы IIS -> Службы интернета -> Компоненты разработки приложений.Если компоненты установлены, но ошибка сохраняется, проанализируем разрядность нашей системы. Автор темы указал, что использует Windows 10 64-бит и 1С 64-бит. В таких условиях критически важно соблюдать соответствие разрядности рабочего пула приложений IIS и разрядности используемой библиотеки wsisapi.dll.
Разберем детально два сценария настройки пула приложений IIS:
Библиотека расширения загружается по пути: C:\Program Files\1cv8\[ВерсияПлатформы]\bin\wsisapi.dll. В этом случае нам нужно зайти в Диспетчер служб IIS, выбрать раздел «Пулы приложений», кликнуть правой кнопкой мыши на пул, используемый вашей публикацией (по умолчанию это DefaultAppPool), и открыть «Дополнительные параметры». Параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications) должен быть обязательно установлен в значение False.
Библиотека находится по пути: C:\Program Files (x86)\1cv8\[ВерсияПлатформы]\bin\wsisapi.dll. В дополнительных параметрах пула приложений IIS свойство «Разрешить 32-разрядные приложения» необходимо перевести в значение True.
Если разрядность пула приложений не соответствует разрядности библиотеки, IIS не сможет запустить поток и вернет ошибку повреждения модуля.
Для обеспечения безопасности IIS блокирует запуск любых сторонних динамических библиотек, если они не внесены в список доверенных. Нам необходимо явно разрешить выполнение библиотеки 1С на сервере:
wsisapi.dll, который соответствует разрядности и версии нашей рабочей платформы. Например: C:\Program Files\1cv8\8.3.22.1709\bin\wsisapi.dll.1C Web Extension, установим галочку «Разрешить выполнение пути расширения» и нажмем «ОК».Часто ошибка возникает после обновления платформы 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С.
Рабочие процессы IIS функционируют в операционной системе от имени служебных учетных записей. По умолчанию это группа пользователей IIS_IUSRS или встроенный пользователь IUSR. Если у данных учетных записей нет прав на чтение и запуск библиотек 1С, IIS выдаст ошибку о повреждении модуля.
Настроим права доступа по шагам:
C:\Program Files\1cv8\).1cv8, выберем «Свойства» и перейдем на вкладку «Безопасность».IIS_IUSRS, нажмем «Проверить имена» и подтвердим выбор.default.vrd и web.config). Здесь группе IIS_IUSRS также можно предоставить права на запись, если планируется использование логов или локальных файлов настроек.Библиотека wsisapi.dll разработана с использованием компонентов C++. Если на сервере или рабочем компьютере с Windows 10 отсутствуют актуальные библиотеки среды выполнения Microsoft Visual C++ Redistributable, операционная система не сможет корректно инициализировать модуль.
Для решения этой проблемы рекомендуется скачать с официального сайта Microsoft и установить пакеты Visual C++ Redistributable для архитектур x86 и x64. Рекомендуется устанавливать версии, соответствующие году выпуска вашей платформы 1С (обычно это пакеты Visual Studio 2015–2022).
После выполнения всех описанных шагов перезапустите службу веб-сервера IIS. Сделать это можно через консоль администрирования IIS (действие «Перезапуск» на узле сервера) либо через командную строку, запущенную от имени администратора, выполнив команду iisreset. Публикация базы 1С начнет работать в штатном режиме без ошибок.