При обновлении платформы 1С:Предприятие системные администраторы часто сталкиваются со сбоями в работе веб-сервисов и баз данных, опубликованных на IIS (Internet Information Services). Типичный сценарий: переход на новую версию платформы (например, с 8.3.9 на 8.3.11 или 8.3.12) завершается ошибкой инициализации модуля IsapiModule с кодом 0x80004005 при попытке обратиться к публикации. Эта ошибка означает «Неопределенная ошибка» (Unspecified Error), но на практике за ней скрываются вполне конкретные технические нестыковки в конфигурации IIS, разрядности приложений и правах доступа.
В этой статье мы подробно разберем, почему возникает эта проблема, и пошагово настроим систему так, чтобы восстановить стабильную работу веб-сервера.
Когда веб-сервер IIS обрабатывает запрос к базе данных 1С, он перенаправляет его специальному обработчику — динамической библиотеке wsisapi.dll. Ошибка 0x80004005 на этапе ExecuteRequestHandler сигнализирует о том, что IIS не смог успешно запустить или выполнить этот обработчик. Рассмотрим основные причины этой проблемы:
wsisapi.dll в 64-разрядный рабочий процесс пула приложений IIS (или наоборот).wsisapi.dll не внесена в список разрешенных расширений ISAPI на уровне всего веб-сервера.Давайте последовательно разберем шаги по устранению каждой из этих причин.
Это одна из самых частых ошибок настройки. Разрядность пула приложений IIS должна строго соответствовать разрядности используемой библиотеки 1С. Выясним, какая версия платформы у нас установлена, и настроим пул приложений.
Проанализируем правила соответствия:
C:\Program Files\1cv8\[Номер_Версии]\bin\wsisapi.dll. В этом случае в свойствах пула приложений параметр "Разрешить 32-разрядные приложения" (Enable 32-Bit Applications) должен быть установлен в значение False.C:\Program Files (x86)\1cv8\[Номер_Версии]\bin\wsisapi.dll. В этом случае в свойствах пула приложений параметр "Разрешить 32-разрядные приложения" должен быть установлен в значение True.Для изменения этой настройки выполним следующие действия:
DefaultAppPool или специализированный пул для 1С).wsisapi.dll.После обновления платформы необходимо перепубликовать базу из конфигуратора или вручную перепрописать корректные пути к новой библиотеке 1С в настройках обработчиков IIS. Выполним это вручную для полной уверенности:
1C Web-service Extension или имеет путь запроса *.1cws, *.1crs).wsisapi.dll. Например:
C:\Program Files\1cv8\8.3.11.2867\bin\wsisapi.dll (для 64-битной версии).Даже если путь к библиотеке указан правильно в настройках конкретного сайта, IIS заблокирует запуск новой DLL-библиотеки, если она не разрешена глобальными политиками безопасности сервера. Нам необходимо убедиться, что новая версия wsisapi.dll добавлена в список доверенных расширений.
Разберем по шагам, как это сделать:
C:\Program Files\1cv8\8.3.11.2867\bin\wsisapi.dll1C Web-service 8.3.11.2867 x64.Если на одном сервере крутится несколько баз 1С, использующих разные версии платформы, крайне не рекомендуется запускать их в рамках одного пула приложений (например, стандартного DefaultAppPool). Рабочий процесс пула (w3wp.exe) не может одновременно загрузить в свою оперативную память две разные версии одной и той же библиотеки wsisapi.dll. Это приводит к непредсказуемым ошибкам, включая 0x80004005.
Рассмотрим процесс создания изолированного пула приложений:
Pool_1C_8.3.11. Нажмем ОК.Pool_1C_8.3.11 и нажмем ОК.Часто после установки обновления операционная система не наследует права доступа для новой папки релиза платформы автоматическим службам Windows. Проверим и настроим права доступа для учетной записи, от имени которой работает веб-сервер:
IIS_IUSRS или локальная служба NetworkService (это можно проверить в свойствах пула в разделе "Удостоверение" / Identity).C:\Program Files\1cv8\ (или C:\Program Files (x86)\1cv8\).8.3.11.2867) и выберем Свойства.IIS_IUSRS (или имя конкретного пользователя пула приложений) и нажмем "Проверить имена".Платформа 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 может перезаписаться. Поэтому рекомендуется сохранить копию этого файла отдельно или переносить данные настройки вручную после каждой перепубликации.
Практический опыт администрирования показывает, что ветка релизов платформы 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. Для этого откроем командную строку от имени Администратора и выполним команду:
iisreset /restart
После перезапуска служб откроем веб-браузер и попробуем обратиться к публикации нашей базы 1С. Теперь база должна успешно пройти инициализацию без вывода ошибок модуля IsapiModule.