Как настроить IIS для корректной публикации HTTP-сервисов 1С?

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

Публикация HTTP-сервисов на веб-сервере Internet Information Services (IIS) — это стандартная задача при интеграции 1С с внешними системами. Однако часто специалисты сталкиваются с ситуацией, когда сама база данных успешно открывается через браузер, а попытка обращения к конкретному HTTP-сервису заканчивается ошибкой 404 или некорректным отображением каталога. В этой статье мы подробно разберем, как правильно настроить IIS, устранить типичные ошибки и обеспечим стабильную работу ваших веб-решений.

Анализ основной проблемы: сопоставление обработчиков

Разберем ситуацию, когда публикация вроде бы выполнена, но сервис «не виден» для веб-сервера. Одной из ключевых причин является неверная настройка модуля Handler Mappings (Сопоставление обработчиков) в консоли управления IIS. Рассмотрим подробнее, как система понимает, что входящий запрос нужно передать именно библиотеке 1С.

Посмотрим на типичную ошибку: часто при ручной настройке или сбоях автоматической публикации в поле «Путь» (Path) указывается расширение *.1crs. Это логично для веб-клиента, но для HTTP-сервисов такой подход не работает. Выясним причину: HTTP-сервисы 1С используют произвольные URL-адреса, которые не заканчиваются конкретным расширением файла. Поэтому для корректной работы обработчик должен быть настроен на путь *.* или просто *.

Проанализируем правильный алгоритм настройки обработчика:

  1. Откроем диспетчер служб IIS и выберем наш опубликованный сайт (или виртуальное приложение).
  2. Перейдем в раздел Handler Mappings.
  3. Найдем или создадим заново сопоставление для модуля IsapiModule.
  4. В поле «Путь запроса» обязательно укажем * или *.*.
  5. В качестве исполняемого файла выберем путь к библиотеке расширения 1С wsapiex.dll, которая находится в каталоге bin установленной платформы.

Настройка прав доступа и разрешений файловой системы

Даже если обработчики настроены идеально, IIS может не иметь физической возможности запустить процесс из-за ограничений безопасности Windows. Разберем по шагам, кому и какие права необходимы для работы.

Выясним, от чьего имени работает ваш веб-сервер. Обычно это учетная запись IIS AppPool\ИмяВашегоПула или NetworkService. Этому пользователю крайне важно предоставить следующие права:

Во-первых, права на чтение и выполнение в каталоге, где установлена платформа 1С (папка bin). Это необходимо, чтобы IIS мог загрузить в память библиотеку wsapiex.dll и связанные с ней компоненты. Без этого вы получите ошибку доступа (500.19 или 401).

Во-вторых, требуются полные права на папку, в которой находится файл публикации default.vrd. Платформа 1С в процессе работы может записывать логи или обновлять временные параметры в этом каталоге. Если прав будет недостаточно, публикация может вести себя непредсказуемо.

Ограничения ISAPI и CGI на уровне сервера

Рассмотрим ситуацию, когда настройки внутри конкретного сайта верны, но сервер всё равно выдает ошибку 404.2 (Requested content seems to be script and will not be served by the static file handler). Это происходит из-за глобальных ограничений безопасности IIS.

Посмотрим, как это исправить:

  1. В диспетчере IIS выберем корень сервера (самый верхний узел в дереве слева).
  2. Откроем раздел ISAPI and CGI Restrictions (Ограничения ISAPI и CGI).
  3. Проверим, есть ли в списке путь к нашей библиотеке wsapiex.dll.
  4. Если пути нет, его нужно добавить вручную, указав флаг «Разрешить выполнение пути расширения» (Allow extension path to execute).

Разрядность пула приложений: 32 бита против 64 бит

Одной из самых коварных проблем является несоответствие разрядности установленной платформы 1С и настроек пула приложений IIS. Проанализируем, как это влияет на работу.

Если вы используете 64-разрядную версию 1С, то библиотека wsapiex.dll также является 64-битной. В этом случае пул приложений должен работать в стандартном режиме. Однако если ваша платформа 32-разрядная, то в расширенных настройках пула приложений (Advanced Settings) необходимо обязательно установить параметр Enable 32-Bit Applications в значение True.

Смешивание разрядности (например, попытка запустить 32-битную библиотеку в 64-битном пуле) гарантированно приведет к ошибке 500 и невозможности инициализации модуля 1С.

Структура файла конфигурации default.vrd

Файл default.vrd является «сердцем» публикации. Для HTTP-сервисов его структура имеет критическое значение. Рассмотрим пример корректной секции внутри этого файла, которую система должна содержать для распознавания ваших сервисов:


<httpServices>
    <service name="ИмяСервисаИзКонфигуратора" rootUrl="my_api" enable="true" />
</httpServices>

Разберем атрибуты подробнее:

Важный нюанс: если вы добавили новый сервис в конфигурацию и просто нажали «Опубликовать», 1С не всегда корректно обновляет этот файл, если он был ранее изменен вручную. Рекомендуется проверять содержимое default.vrd в текстовом редакторе.

Особенности формирования URL-адреса

Многие разработчики совершают ошибку при формировании ссылки для вызова сервиса. Выясним, как выглядит правильная структура URL:

http://[имя_сервера]/[имя_публикации]/hs/[rootUrl]/[относительный_путь]

Разберем обязательные элементы:

  1. hs — это жестко заданный платформой префикс (от английского HTTP Service). Он указывает обработчику 1С, что данный запрос не относится к веб-клиенту или SOAP-сервисам, а должен быть передан в логику HTTP-сервисов.
  2. rootUrl — то самое имя, которое мы прописали в default.vrd или в свойствах сервиса в конфигураторе.

Если пропустить сегмент hs, сервер вернет ошибку 404, так как не поймет, какому модулю передать управление запросом.

Настройка аутентификации

Проанализируем вопрос безопасности. Для HTTP-сервисов 1С в настройках IIS обычно должна быть включена Anonymous Authentication (Анонимная проверка подлинности). Это может показаться странным, но логика здесь проста: проверку логина и пароля пользователя 1С выполняет сама платформа на основе заголовка Authorization: Basic, который присылает клиент. Если в IIS выключить анонимный доступ и оставить только Windows-авторизацию, внешние системы (например, мобильные приложения или веб-сайты) не смогут подключиться без предварительной авторизации в домене Windows.

Проверка компонентов Windows

В завершение разберем системные требования. Часто публикация не взлетает, потому что при установке роли Web-Server (IIS) были пропущены важные компоненты. Убедимся, что в системе активированы:

Без этих компонентов IIS просто не «увидит» библиотеку wsapiex.dll как исполняемый модуль, и настройки обработчиков *.* не дадут никакого результата.

Таким образом, правильная настройка HTTP-сервисов 1С на IIS складывается из трех составляющих: корректного сопоставления обработчиков на путь *, обеспечения прав доступа для пула приложений и точного следования структуре URL с использованием префикса hs.

← На главную