Как исправить ошибку HTTP 500.0 при публикации 1С на IIS?

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

При публикации информационной базы 1С на веб-сервере Internet Information Services (IIS) системные администраторы и специалисты 1С часто сталкиваются с ошибкой HTTP 500.0 — Internal Server Error. В описании ошибки обычно указывается, что сервер не смог обработать модуль запрашиваемого скрипта или обработчик ISAPI. При этом разворачивание аналогичной публикации на Apache проходит без проблем, однако IIS необходим в тех случаях, когда требуется сквозная аутентификация Windows (NTLM / Kerberos).

Проанализируем основные причины возникновения этой проблемы и разберем по шагам порядок настройки веб-сервера IIS для успешной работы веб-клиента и веб-сервисов 1С.

1. Проверка разрядности пула приложений 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:

  1. Если используется 64-битный модуль 1С (из папки Program Files), параметр должен быть строго установлен в значение False. Если оставить True, 64-битный DLL-файл попытается загрузиться в 32-битный процесс и вызовет ошибку HTTP 500.0.
  2. Если используется 32-битный модуль 1С (из папки Program Files (x86)), параметр в настройках пула приложений должен быть переключен в значение True.

2. Проверка ограничений ISAPI и CGI на сервере

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

  1. Откроем Диспетчер служб IIS и выберем корневой элемент (имя самого сервера).
  2. Зайдем в раздел Ограничения ISAPI и CGI (ISAPI and CGI Restrictions).
  3. Проверим, добавлен ли путь к файлу wsisapi.dll соответствующей версии 1С в список разрешенных.
  4. Если путь отсутствует, добавим его вручную и укажем статус Разрешено (Allowed).

3. Проверка установленных компонентов роли IIS

Убедимся, что на сервере под управлением Windows Server включены все необходимые компоненты роли «Веб-сервер (IIS)». В разделе Средства разработки приложений (Application Development Features) должны быть обязательно отмечены следующие пункты:

  1. Расширения ISAPI (ISAPI Extensions) — без этого компонента IIS не сможет запустить модуль wsisapi.dll.
  2. Фильтры ISAPI (ISAPI Filters).
  3. Аутентификация Windows (Windows Authentication) — в блоке «Безопасность», необходима для сквозного входа доменных пользователей.

4. Структура конфигурационных файлов web.config и default.vrd

Посмотрим на пример правильного файла 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>

5. Настройка прав доступа файловой системы (NTFS)

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

  1. Перейдем к папке с установленной платформой 1С (например, C:\Program Files\1cv8\).
  2. Откроем свойства папки, вкладку Безопасность.
  3. Предоставим группы IIS_IUSRS и локальной учетной записи IUSR права Чтение и выполнение (Read & Execute), Список содержимого папки и Чтение.
  4. Аналогичные права на чтение и запись необходимо предоставить группе IIS_IUSRS на каталог с опубликованной базой (где расположены web.config и default.vrd).
  5. Если база данных является файловой (каталог с файлом 1Cv8.1CD), группе IIS_IUSRS или учетной записи пула приложений требуется предоставить полный доступ (или права Изменение / Modify) на каталог с файлом базы.

6. Системные библиотеки Visual C++ Redistributable

Если IIS развернут на отдельном выделенном веб-сервере, куда не устанавливался полноценный технологический стек 1С (а были скопированы только файлы веб-компонентов), библиотека wsisapi.dll может не запускаться из-за отсутствия системных библиотек Visual C++. Рекомендуется установить на сервер соответствующий пакет Microsoft Visual C++ Redistributable (версия зависит от релиза платформы 1С, чаще всего 2013/2015-2022 годов) той же разрядности, что и используемый модуль 1С.

← На главную