Развертывание веб-сервисов 1С на платформе IIS (Internet Information Services) — задача, требующая предельной точности в настройках. Ошибка 0x80004005 является одной из самых коварных, так как она относится к категории «неопределенных сбоев» (Unspecified Error), но чаще всего за ней скрываются проблемы с правами доступа, несоответствие битности систем или блокировка библиотек расширения. В этой статье мы подробно разберем, как диагностировать и устранить причины этой ошибки, основываясь на практическом опыте администраторов.
Прежде всего, разберем ситуацию, когда используется 64-битная версия платформы 1С:Предприятие на Windows Server 2012 R2. Одной из распространенных ошибок является попытка «перестраховаться» и включить поддержку 32-битных приложений в настройках IIS. Выясним, почему это может мешать.
Если у вас установлена 64-разрядная версия 1С, то библиотека wsisapi.dll также является 64-разрядной. Включая в пуле приложений настройку «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications), вы заставляете рабочий процесс IIS ожидать 32-битную библиотеку. В итоге происходит конфликт, и сервер выдает ошибку инициализации модуля. Рассмотрим правильный порядок действий:
iisreset в командной строке для применения изменений.Иногда стандартная публикация через конфигуратор 1С не прописывает все необходимые параметры в конфигурации IIS. В этом случае нам необходимо вручную добавить сопоставление сценариев для корректной работы расширения веб-сервисов 1С. Разберем по шагам, как это сделать:
* (или *.1cws, если нужно ограничить обработку только веб-сервисами)."C:\Program Files\1cv8\8.3.12.1440\bin\wsisapi.dll".1C-WebServices.После добавления IIS предложит разрешить это расширение в списке «Ограничения ISAPI и CGI». Обязательно ответьте Да.
Ошибка 0x80004005 часто означает «Отказано в доступе» на уровне файловой системы. Выясним причину: рабочий процесс IIS (w3wp.exe) запускается от имени специальной учетной записи пула приложений, которая не имеет прав на чтение бинарных файлов 1С в папке Program Files.
Рассмотрим, как правильно настроить права доступа:
C:\Program Files\1cv8\).IIS AppPool\ИмяВашегоПула).C:\inetpub\wwwroot\ваша_база\).Важный момент: если база является файловой, то учетная запись, под которой работает пул приложений IIS, должна иметь полные права (включая запись и изменение) на папку с самой базой данных 1С.
Посмотрим на ситуацию со стороны операционной системы Windows Server 2012 R2. Часто при установке IIS администраторы забывают включить поддержку ISAPI-расширений. Без этого компонента IIS просто не знает, что делать с файлом wsisapi.dll.
Проанализируем список установленных ролей:
Поскольку сервер виртуальный и «чистый», в системе могут отсутствовать необходимые библиотеки времени выполнения. Библиотека wsisapi.dll зависит от пакетов Microsoft Visual C++ Redistributable. Если нужной версии нет, библиотека не сможет загрузиться в процесс, возвращая общую ошибку 0x80004005.
Рекомендуется установить пакеты Visual C++ (x64) версий 2013, 2015-2019. Это обеспечит наличие всех необходимых системных вызовов, которые использует платформа 1С 8.3.12.
Проанализируем содержимое файла web.config, который создается в папке публикации. Он должен содержать правильные пути к модулю. Пример корректного блока конфигурации для x64 систем:
<configuration>
<system.webServer>
<handlers>
<add name="1C Web-service Extension"
path="*"
verb="*"
modules="IsapiModule"
scriptProcessor="C:\Program Files\1cv8\8.3.12.1440\bin\wsisapi.dll"
resourceType="Unspecified"
requireAccess="Execute" />
</handlers>
</system.webServer>
</configuration>
Обратите внимание на параметр modules="IsapiModule". Если в системе не установлены компоненты ISAPI (о чем мы говорили выше), этот обработчик просто не будет распознан.
На виртуальных машинах под управлением некоторых гипервизоров (например, KVM) может быть жестко настроена политика предотвращения выполнения данных (DEP). Если система безопасности блокирует выполнение кода из библиотек в памяти процесса IIS, вы также увидите ошибку 0x80004005. Попробуем проверить это:
w3wp.exe в список исключений (хотя первый вариант предпочтительнее для диагностики).Подводя итог, можно сказать, что решение проблемы 0x80004005 заключается в комплексной проверке: от битности пула приложений и наличия ролей ISAPI до тонкой настройки прав доступа пользователя пула приложений к бинарным файлам платформы 1С.