Как исправить ошибку 0x80004005 (IsapiModule) при публикации 1С на веб-сервере IIS после обновления платформы

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

При обновлении платформы 1С:Предприятие системные администраторы часто сталкиваются со сбоями в работе веб-сервисов и баз данных, опубликованных на IIS (Internet Information Services). Типичный сценарий: переход на новую версию платформы (например, с 8.3.9 на 8.3.11 или 8.3.12) завершается ошибкой инициализации модуля IsapiModule с кодом 0x80004005 при попытке обратиться к публикации. Эта ошибка означает «Неопределенная ошибка» (Unspecified Error), но на практике за ней скрываются вполне конкретные технические нестыковки в конфигурации IIS, разрядности приложений и правах доступа.

В этой статье мы подробно разберем, почему возникает эта проблема, и пошагово настроим систему так, чтобы восстановить стабильную работу веб-сервера.

Выясняем причины возникновения ошибки 0x80004005

Когда веб-сервер IIS обрабатывает запрос к базе данных 1С, он перенаправляет его специальному обработчику — динамической библиотеке wsisapi.dll. Ошибка 0x80004005 на этапе ExecuteRequestHandler сигнализирует о том, что IIS не смог успешно запустить или выполнить этот обработчик. Рассмотрим основные причины этой проблемы:

  1. Конфликт разрядности (32-bit vs 64-bit): Попытка загрузить 32-разрядную библиотеку wsisapi.dll в 64-разрядный рабочий процесс пула приложений IIS (или наоборот).
  2. Неактуальные пути в сопоставлении обработчиков: После установки новой платформы IIS продолжает обращаться к старой библиотеке по несуществующему или заблокированному пути.
  3. Глобальные ограничения безопасности IIS: Новая версия библиотеки wsisapi.dll не внесена в список разрешенных расширений ISAPI на уровне всего веб-сервера.
  4. Конфликт пулов приложений: Несколько баз данных используют один и тот же пул приложений, что мешает IIS изолировать процессы разных версий платформы.
  5. Нехватка прав доступа: У системной учетной записи, от имени которой запущен пул приложений IIS, нет прав на чтение каталога новой платформы 1С.
  6. Ошибки и баги конкретного релиза: Известно, что некоторые релизы платформы 1С (например, ветка 8.3.11) содержали внутренние ошибки взаимодействия с IIS, которые устранялись в последующих обновлениях.

Давайте последовательно разберем шаги по устранению каждой из этих причин.

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

Это одна из самых частых ошибок настройки. Разрядность пула приложений IIS должна строго соответствовать разрядности используемой библиотеки 1С. Выясним, какая версия платформы у нас установлена, и настроим пул приложений.

Проанализируем правила соответствия:

Для изменения этой настройки выполним следующие действия:

  1. Откроем Диспетчер служб IIS.
  2. В левом дереве подключений выберем пункт Пулы приложений (Application Pools).
  3. Найдем пул, который назначен нашей публикации (например, DefaultAppPool или специализированный пул для 1С).
  4. Кликнем по нему правой кнопкой мыши и выберем Дополнительные параметры... (Advanced Settings).
  5. Найдем строку Разрешить 32-разрядные приложения и установим нужное значение в соответствии с разрядностью нашей библиотеки wsisapi.dll.
  6. Нажмем ОК для сохранения настроек.

Шаг 2. Корректируем сопоставление обработчиков (Handler Mappings)

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

  1. В Диспетчере служб IIS перейдем к нашей опубликованной базе данных (в дереве сайтов).
  2. В центральной панели дважды кликнем по иконке Сопоставление обработчиков (Handler Mappings).
  3. Найдем в списке обработчик, отвечающий за веб-сервисы 1С (обычно он называется 1C Web-service Extension или имеет путь запроса *.1cws, *.1crs).
  4. Нажмем на него правой кнопкой мыши и выберем Изменить... (Edit).
  5. В поле Исполняемый файл (необязательно) укажем точный путь к новой библиотеке wsisapi.dll. Например:
    C:\Program Files\1cv8\8.3.11.2867\bin\wsisapi.dll (для 64-битной версии).
  6. Нажмем кнопку Ограничения запроса... (Request Restrictions). Убедимся, что на вкладке "Запуск" (Access) выбран пункт "Выполнение" (Execute).
  7. Нажмем ОК. Система выдаст предупреждение о подтверждении запуска ISAPI-расширения — соглашаемся и нажимаем Да.

Шаг 3. Настраиваем ограничения ISAPI и CGI на уровне сервера

Даже если путь к библиотеке указан правильно в настройках конкретного сайта, IIS заблокирует запуск новой DLL-библиотеки, если она не разрешена глобальными политиками безопасности сервера. Нам необходимо убедиться, что новая версия wsisapi.dll добавлена в список доверенных расширений.

Разберем по шагам, как это сделать:

  1. В Диспетчере служб IIS выберем самый верхний уровень дерева — имя нашего сервера.
  2. В центральной части откроем раздел Ограничения ISAPI и CGI (ISAPI and CGI Restrictions).
  3. Посмотрим на список разрешенных путей. Если там указан путь к старой версии платформы, нам нужно его обновить или добавить новый.
  4. В панели "Действия" справа нажмем кнопку Добавить... (Add).
  5. В поле Путь к ISAPI или CGI-файлу вставим полный путь к новой библиотеке, например:
    C:\Program Files\1cv8\8.3.11.2867\bin\wsisapi.dll
  6. В поле Описание введем понятное имя, например: 1C Web-service 8.3.11.2867 x64.
  7. Обязательно установим галочку Разрешить выполнение пути расширения (Allow extension path to execute).
  8. Нажмем ОК.

Шаг 4. Изолируем публикации в индивидуальные пулы приложений

Если на одном сервере крутится несколько баз 1С, использующих разные версии платформы, крайне не рекомендуется запускать их в рамках одного пула приложений (например, стандартного DefaultAppPool). Рабочий процесс пула (w3wp.exe) не может одновременно загрузить в свою оперативную память две разные версии одной и той же библиотеки wsisapi.dll. Это приводит к непредсказуемым ошибкам, включая 0x80004005.

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

  1. Перейдем в раздел Пулы приложений диспетчера IIS.
  2. В панели действий справа нажмем Добавить пул приложений... (Add Application Pool).
  3. Зададим имя пула, отражающее его назначение, например: Pool_1C_8.3.11. Нажмем ОК.
  4. Выделим только что созданный пул, зайдем в его Дополнительные параметры и сразу проверим разрядность (параметр "Разрешить 32-разрядные приложения") в соответствии с разрядностью платформы 1С.
  5. Теперь перейдем к нашей публикации базы в списке сайтов.
  6. В панели действий справа выберем пункт Основные настройки... (Basic Settings).
  7. В строке "Пул приложений" нажмем кнопку Выбрать..., укажем наш новый пул Pool_1C_8.3.11 и нажмем ОК.

Шаг 5. Настраиваем права доступа к папкам платформы 1С

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

  1. Выясним, под каким пользователем работает наш пул приложений. Обычно это системная учетная запись IIS_IUSRS или локальная служба NetworkService (это можно проверить в свойствах пула в разделе "Удостоверение" / Identity).
  2. Откроем Проводник Windows и перейдем к папке с установленной платформой: C:\Program Files\1cv8\ (или C:\Program Files (x86)\1cv8\).
  3. Нажмем правой кнопкой мыши по папке установленной версии (например, 8.3.11.2867) и выберем Свойства.
  4. Перейдем на вкладку Безопасность и нажмем кнопку Изменить...
  5. Нажмем кнопку Добавить..., введем имя группы IIS_IUSRS (или имя конкретного пользователя пула приложений) и нажмем "Проверить имена".
  6. После успешного добавления выделим пользователя в списке и в окне разрешений предоставим ему права Чтение и выполнение, Список содержимого папки и Чтение.
  7. Нажмем Применить и дождемся окончания наследования прав на все вложенные файлы и папки.

Шаг 6. Тонкая настройка конфигурационного файла web.config

Платформа 1С при работе через веб-сервер часто передает сложные GET-запросы, содержащие двоеточия и другие спецсимволы в путях (особенно при работе с REST API, OData или формировании сложных отчетов). Система безопасности IIS может расценивать такие символы как потенциальную угрозу (Cross-Site Scripting) и блокировать выполнение обработчика с кодом ошибки 0x80004005.

Для решения этой проблемы мы внесем изменения в конфигурационный файл web.config, расположенный непосредственно в физическом каталоге нашей публикации базы данных (этот каталог указывается при публикации в Конфигураторе 1С, обычно он находится внутри директории C:\inetpub\wwwroot\).

Откроем текстовым редактором файл web.config и добавим настройки двойного экранирования и отключения валидации опасных запросов. Посмотрим на пример корректной структуры конфигурационного файла:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.11.2867\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="Execute" />
        </handlers>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
    </system.webServer>
    <system.web>
        <pages validateRequest="false" />
        <httpRuntime requestPathInvalidCharacters="" />
    </system.web>
</configuration>

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

Шаг 7. Проверка стабильности релиза платформы 1С

Практический опыт администрирования показывает, что ветка релизов платформы 8.3.11 (включая популярный релиз 8.3.11.2867) имела ряд критических внутренних ошибок, связанных со стабильностью интеграции с веб-серверами на базе ОС Windows Server 2012 R2. Пользователи часто сталкивались с тем, что даже при абсолютно верных настройках IIS ошибка 0x80004005 продолжала периодически возникать под высокой нагрузкой или при определенных запросах.

Если все предыдущие шаги настройки выполнены, права розданы, пути соответствуют разрядности пула приложений, но ошибка не исчезла — мы рекомендуем обновить платформу 1С:Предприятие до более стабильного и проверенного временем релиза, например, ветки 8.3.12 (релиз 8.3.12.1440 или выше) либо до актуальных на сегодняшний день версий LTS (например, ветки 8.3.22 или 8.3.23).

Перезапуск веб-сервера IIS

После проведения всех настроек и манипуляций обязательно выполним полный перезапуск веб-сервера для очистки кэша рабочих процессов IIS. Для этого откроем командную строку от имени Администратора и выполним команду:

iisreset /restart

После перезапуска служб откроем веб-браузер и попробуем обратиться к публикации нашей базы 1С. Теперь база должна успешно пройти инициализацию без вывода ошибок модуля IsapiModule.

← На главную