Как устранить ошибку «Handler "1C Web-service Extension" has a bad module "IsapiModule"» при публикации базы 1С?

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

При публикации информационной базы 1С на веб-сервере Internet Information Services (IIS) специалисты часто сталкиваются с неприятной ошибкой: «Handler "1C Web-service Extension" has a bad module "IsapiModule" in its module list». Эта проблема блокирует доступ к базе через браузер или тонкий клиент, делая работу невозможной. Давайте подробно разберем, почему возникает эта ситуация, и проанализируем пошаговые алгоритмы её решения.

Разбор причины возникновения ошибки

Для начала выясним причину. Ошибка прямо указывает на то, что обработчик 1C Web-service Extension, который создается в настройках IIS при публикации базы из Конфигуратора, ссылается на модуль IsapiModule. Однако сам веб-сервер IIS об этом модуле ничего не знает, так как он не установлен или не активирован в глобальных настройках сервера. Модули ISAPI (Internet Server Application Programming Interface) являются критически важными для работы 1С, так как именно через них происходит взаимодействие между веб-сервером и библиотекой расширения 1С wsisapi.dll.

Решение 1: Установка необходимых компонентов IIS

Рассмотрим основной способ решения, который заключается в правильной настройке ролей и компонентов операционной системы Windows. Часто при быстрой установке IIS администраторы забывают отметить пункты, отвечающие за разработку приложений.

Выполним следующие шаги:

  1. Откроем Панель управления и перейдем в раздел «Программы и компоненты», затем выберем «Включение или отключение компонентов Windows». Если вы работаете на Windows Server, используйте «Диспетчер серверов» (Server Manager) и мастер добавления ролей и компонентов.
  2. В открывшемся дереве компонентов найдем узел «Службы IIS» (Internet Information Services).
  3. Развернем подраздел «Службы интернета» (World Wide Web Services), а затем — «Компоненты разработки приложений» (Application Development Features).
  4. Нам необходимо обязательно отметить галочками два компонента: «Расширения ISAPI» (ISAPI Extensions) и «Фильтры ISAPI» (ISAPI Filters).
  5. Нажмем «ОК» и дождемся завершения процесса установки.

После установки компонентов крайне важно перезапустить веб-сервер. Для этого можно воспользоваться командой в командной строке, запущенной от имени администратора:

iisreset /restart

Решение 2: Исправление установки .NET Framework 3.5

Как мы видим из обсуждения на форуме, иногда попытка переустановить модули 1С упирается в ошибку установки .NET Framework 3.5. В современных версиях Windows файлы для этой версии фреймворка часто отсутствуют в локальном кэше обновлений. Проанализируем ситуацию, когда стандартная установка через интерфейс Windows завершается неудачей.

Рассмотрим наиболее эффективный метод установки с использованием утилиты DISM. Для этого нам понадобится дистрибутив Windows (ISO-образ или загрузочная флешка), версия которой совпадает с установленной системой.

  1. Смонтируем образ диска с Windows (например, он получит букву D:).
  2. Запустим командную строку (CMD) от имени администратора.
  3. Выполним следующую команду для принудительной установки компонента из исходных файлов дистрибутива:

dism /online /enable-feature /featurename:NetFX3 /all /Source:D:\sources\sxs /LimitAccess

Разберем параметры этой команды: /online означает работу с текущей ОС, /featurename:NetFX3 указывает на .NET 3.5, а /Source задает путь к папке с компонентами на диске. Параметр /LimitAccess запрещает системе обращаться к серверам Windows Update, если они заблокированы политиками организации.

Решение 3: Настройка разрядности пула приложений

Проанализируем еще одну тонкость. Если вы используете 32-битную версию платформы 1С (например, для совместимости со старыми драйверами или внешними компонентами) на 64-битной операционной системе, IIS по умолчанию не сможет запустить 32-битный модуль wsisapi.dll.

Чтобы исправить это, выполним настройку пула:

  1. Откроем Диспетчер служб IIS.
  2. Перейдем в раздел «Пулы приложений».
  3. Найдем пул, который используется вашей опубликованной базой (обычно он создается автоматически при публикации).
  4. Нажмем правой кнопкой мыши и выберем «Дополнительные параметры».
  5. Найдем строку «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение True.
  6. Перезапустим пул приложений.

Решение 4: Права доступа на каталог платформы

Выясним причину, по которой модуль может быть «плохим» (bad) даже при наличии всех установленных компонентов. Это часто связано с тем, что рабочий процесс IIS не имеет прав на чтение файлов в папке bin установленной платформы 1С.

Посмотрим на алгоритм настройки прав:

  1. Перейдем в папку установки 1С (например, C:\Program Files\1cv8\8.3.XX.XXXX\bin).
  2. Откроем свойства папки bin, вкладка «Безопасность».
  3. Нам нужно добавить пользователя, от имени которого работает IIS. В зависимости от настроек это может быть IUSR или IIS_IUSRS. Также рекомендуется добавить учетную запись IIS AppPool\ИмяВашегоПула.
  4. Дадим этим пользователям права на «Чтение и выполнение», «Список содержимого папки» и «Чтение».

Решение 5: Перепубликация базы после изменений

После того как мы исправили конфигурацию Windows и IIS, рекомендуется выполнить «чистую» публикацию. Рассмотрим правильный порядок действий:

  1. Запустим Конфигуратор 1С от имени администратора (это обязательно для корректной записи в конфигурационные файлы IIS).
  2. Перейдем в меню «Администрирование» — «Публикация на веб-сервере».
  3. Нажмем кнопку «Удалить публикацию».
  4. Убедимся, что в каталоге публикации (например, C:\inetpub\wwwroot\MyBase) удален файл web.config.
  5. Вернемся в окно публикации и нажмем «Опубликовать» заново.

В результате этих действий файл web.config будет пересоздан с правильными ссылками на установленные в системе модули. Внутри этого файла за логику обработки запросов отвечает секция handlers. Пример того, как должна выглядеть запись (упрощенно):


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

Если после всех манипуляций ошибка сохраняется, проверьте системный журнал событий Windows (Event Viewer). В разделе «Журналы Windows» — «Приложение» можно найти уточняющие детали о том, какой именно DLL-файл не удалось загрузить и по какой причине.

Подведем итог: системный подход к установке ролей IIS, внимательное отношение к разрядности платформы и использование инструментов командной строки типа DISM позволяют полностью устранить проблему с IsapiModule и обеспечить стабильную работу веб-сервисов 1С.

← На главную