Почему при обращении к веб-сервису 1С на веб-сервере Apache возникает ошибка HTTP 404 Not Found?

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

При публикации конфигураций и сервисов «1С:Предприятие 8.3» на веб-сервере Apache разработчики нередко сталкиваются с ситуацией: публикация через конфигуратор завершается успешно, однако при попытке получить WSDL-описание сервиса в браузере или стороннем клиенте возвращается ошибка HTTP: Not found. Ошибка при выполнении запроса GET к ресурсу. Разберем по шагам, почему возникает эта ошибка, как правильно формировать адрес обращения к SOAP веб-сервисам и какие нюансы нужно учесть при настройке взаимодействия веб-сервера и сервера 1С.

Причина 1. Ошибка в структуре URL: пропущен обязательный сегмент /ws/

Проанализируем структуру ссылки, которую часто ошибочно используют для проверки: http://10.5.5.121/VV_Stage/ws1.1cws?wsdl. В данной ссылке сразу после имени публикации указано имя точки подключения сервиса. Однако стандарт платформы «1С:Предприятие 8.3» строго регламентирует иерархию маршрутизации веб-запросов.

Для обращения к SOAP Web-сервисам 1С между именем публикации и именем самого веб-сервиса обязательно должен присутствовать сегмент пути ws.

Рассмотрим правильный формат адреса для получения схемы WSDL:

http://<Сервер>/<ИмяПубликации>/ws/<ИмяВебСервиса>.1cws?wsdl

Если применить это правило к рассматриваемому примеру, корректная ссылка примет вид:

http://10.5.5.121/VV_Stage/ws/ws1.1cws?wsdl

Обратим внимание на регистр символов в строке адреса: Apache и платформа 1С чувствительны к регистру. Имя публикации VV_Stage и псевдоним сервиса ws1.1cws должны в точности соответствовать тем именам, которые заданы в конфигурации и файле дескриптора публикации.

Причина 2. Проверка дескриптора публикации default.vrd

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

Разберем пример корректной структуры файла default.vrd для публикации веб-сервиса:


<?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="/VV_Stage"
       ib="Srvr=&quot;AppServer1C&quot;;Ref=&quot;VV_Stage&quot;;">
    <ws pointEnableCommon="true">
        <point name="ws1" alias="ws1.1cws" enable="true"/>
    </ws>
</point>

Рассмотрим ключевые параметры файла дескриптора:

  1. Параметр pointEnableCommon="true" в секции <ws> разрешает публикацию всех веб-сервисов конфигурации.
  2. Если требуется точечный доступ, конкретный сервис описывается отдельным тегом <point>, где атрибут name задает имя объекта метаданных в конфигураторе, а alias — имя ресурса с расширением .1cws.
  3. Если веб-сервис разработан в составе расширения конфигурации, необходимо убедиться, что в секции <ws> установлен флаг publishExtensionsByDefault="true".

Причина 3. Публикация при разнесении веб-сервера и сервера 1С на разные машины

Когда Apache и клиент 1С установлены на одном сервере, а кластер серверов «1С:Предприятия» (SQL-база) расположен на другом хосте, необходимо учесть сетевые доступы и параметры аутентификации.

Разберем порядок проверки распределенной конфигурации:

  1. Строка соединения с кластером: В атрибуте ib файла default.vrd должно быть четко указано имя или IP-адрес сервера 1С: Srvr="ИмяСервера1С";Ref="ИмяБазы";.
  2. Сетевая доступность портов: На сервере, где функционирует кластер 1С, в брандмауэре должны быть открыты рабочие порты платформы (по умолчанию порт 1540 — агент кластера, 1541 — главный менеджер кластера, и диапазон 1560:1591 — рабочие процессы). Веб-сервер Apache должен беспрепятственно устанавливать TCP-соединения с этими портами.
  3. Аутентификация для WSDL: При запросе описания сервиса 1С выполняет проверку прав. Если сервис предназначен для интеграции без постоянного интерактивного ввода логина и пароля в браузере, служебного пользователя с правами на веб-сервис можно зафиксировать непосредственно в строке подключения файла default.vrd:
    ib="Srvr=&quot;AppServer1C&quot;;Ref=&quot;VV_Stage&quot;;Usr=&quot;WebUser&quot;;Pwd=&quot;SecretPass&quot;;"

Причина 4. Совместимость модуля расширения и версии Apache

Проанализируем конфигурационный файл веб-сервера httpd.conf. Для корректной обработки обращений к модулю 1С должны соблюдаться следующие системные требования:

  1. Версия модуля: Для Apache 2.2 должен подключаться модуль wsap22.dll, тогда как для Apache 2.4 используется модуль wsap24.dll.
  2. Разрядность: Разрядность веб-сервера Apache (32-bit или 64-bit) обязана строго совпадать с разрядностью установленного модуля расширения веб-сервера 1С. 32-битный Apache не сможет загрузить 64-битную библиотеку 1С и наоборот.
  3. Права учетной записи: Служба Apache (по умолчанию SYSTEM или специальная сервисная учетная запись) должна обладать правами на чтение каталога с файлом default.vrd и бинарных файлов платформы 1С.

Таким образом, для устранения ошибки HTTP 404 в первую очередь необходимо скорректировать URL, добавив путь /ws/, и проверить в файле default.vrd разрешение на публикацию конкретного веб-сервиса.

← На главную