При публикации информационной базы 1С на веб-сервере Internet Information Services (IIS) системные администраторы и специалисты 1С часто сталкиваются с ошибкой HTTP 500.0 — Internal Server Error. В описании ошибки обычно указывается, что сервер не смог обработать модуль запрашиваемого скрипта или обработчик ISAPI. При этом разворачивание аналогичной публикации на Apache проходит без проблем, однако IIS необходим в тех случаях, когда требуется сквозная аутентификация Windows (NTLM / Kerberos).
Проанализируем основные причины возникновения этой проблемы и разберем по шагам порядок настройки веб-сервера IIS для успешной работы веб-клиента и веб-сервисов 1С.
Выясним главную причину сбоя HTTP 500.0 при загрузке библиотеки wsisapi.dll. Эта ошибка в абсолютном большинстве случаев происходит из-за несоответствия разрядности рабочего процесса IIS (w3wp.exe) и динамической библиотеки 1С.
Если на сервере установлена 64-разрядная версия платформы 1С, то библиотека wsisapi.dll находится по пути вида C:\Program Files\1cv8\8.3.X.X\bin\wsisapi.dll и является 64-битной. Для 32-разрядной версии путь выглядит как C:\Program Files (x86)\1cv8\8.3.X.X\bin\wsisapi.dll.
Рассмотрим правила настройки параметра Разрешены 32-разрядные приложения (Enable 32-Bit Applications) в пуле приложений IIS:
Даже при правильной разрядности IIS может блокировать исполнение сторонних ISAPI-модулей по соображениям безопасности. Проанализируем настройки глобального узла IIS:
wsisapi.dll соответствующей версии 1С в список разрешенных.Убедимся, что на сервере под управлением Windows Server включены все необходимые компоненты роли «Веб-сервер (IIS)». В разделе Средства разработки приложений (Application Development Features) должны быть обязательно отмечены следующие пункты:
wsisapi.dll.Посмотрим на пример правильного файла web.config, который создается в каталоге публикации информационной базы 1С при корректной настройке обработчика:
<?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.9.2033\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="None" />
</handlers>
<security>
<authorization>
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
</configuration>
Обратим внимание на атрибут scriptProcessor: он должен точно указывать на исполняемый файл wsisapi.dll той платформы и разрядности, под которой планируется запуск базы.
Далее проанализируем пример файла default.vrd, определяющего параметры подключения к базе 1С и публикации ее HTTP/WS-сервисов:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/IT"
ib="Srvr=FS;Ref=IT;">
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<ws>
<point name="Exchange"
alias="exchange.1cws"
enable="true"
reuseSessions="dontuse"/>
</ws>
</point>
Ошибка выполнения модуля может быть связана с недостатком прав на чтение бинарных файлов 1С рабочей учетной записью IIS. Разберем по шагам порядок раздачи прав:
C:\Program Files\1cv8\).IIS_IUSRS и локальной учетной записи IUSR права Чтение и выполнение (Read & Execute), Список содержимого папки и Чтение.IIS_IUSRS на каталог с опубликованной базой (где расположены web.config и default.vrd).1Cv8.1CD), группе IIS_IUSRS или учетной записи пула приложений требуется предоставить полный доступ (или права Изменение / Modify) на каталог с файлом базы.Если IIS развернут на отдельном выделенном веб-сервере, куда не устанавливался полноценный технологический стек 1С (а были скопированы только файлы веб-компонентов), библиотека wsisapi.dll может не запускаться из-за отсутствия системных библиотек Visual C++. Рекомендуется установить на сервер соответствующий пакет Microsoft Visual C++ Redistributable (версия зависит от релиза платформы 1С, чаще всего 2013/2015-2022 годов) той же разрядности, что и используемый модуль 1С.