Ситуация, когда веб-сервисы (SOAP) работают исправно, база открывается в браузере, но при попытке обращения к HTTP-сервису сервер возвращает ошибку 404 Not Found, является одной из самых коварных при настройке интеграций. Вроде бы всё настроено верно: файл default.vrd на месте, публикация выполнена, права даны. Разберем по шагам, где кроется загвоздка и как её устранить.
Первым делом нам необходимо проверить соответствие между тем, что прописано в метаданных 1С, и тем, что мы вводим в адресную строку. Ошибка 404 часто возникает из-за банального несовпадения сегментов пути.
Рассмотрим пример из практики. В конфигурации настроен HTTP-сервис со следующими параметрами:
HTTPCallback/{id_Reserve}/{id_ComplexReserve}/{EventType}/{ReserveState}/{ComplexState}/{EventDescription}/{CallbackId}Проанализируем строку запроса: http://localhost/MO/hs/HTTPCallback/A/B/C/D/E/F/J. Здесь:
localhost — адрес сервера.MO — имя публикации (виртуального приложения в IIS/Apache).hs — обязательный признак HTTP-сервиса (HTTP Service).HTTPCallback — корневой URL самого сервиса./A/B/C/D/E/F/J — параметры, которые должны соответствовать шаблону.Важно: Количество сегментов (частей пути между знаками "/") в запросе должно строго соответствовать количеству сегментов в шаблоне, если только в шаблоне не используются специальные символы (например, *). В нашем примере в шаблоне 7 параметров, и в запросе передано 7 значений (A, B, C, D, E, F, J). Если бы параметров было 6 или 8 — сервер выдал бы 404.
Как показывает опыт, самой частой и незаметной причиной ошибки становится копирование текста из мессенджеров, почты или текстовых редакторов. В строку запроса могут попасть:
Если вы уверены, что путь верный, попробуйте полностью удалить строку запроса и переписать её вручную в блокноте или непосредственно в адресной строке браузера. Это исключит влияние "мусорных" символов, которые визуально не определяются, но делают URL некорректным для веб-сервера.
Файл default.vrd является связующим звеном между веб-сервером и платформой 1С. Даже если публикация через конфигуратор прошла успешно, файл может не содержать необходимых инструкций для обработки HTTP-запросов. Выясним, всё ли там в порядке.
Откроем файл в текстовом редакторе и найдем секцию <httpServices>. Она должна выглядеть примерно так:
<httpServices>
<service name="НазваниеСервисаВМетаданных" rootUrl="HTTPCallback" enable="true"/>
</httpServices>
Если внутри тега <httpServices> пусто или ваш сервис там не перечислен, 1С просто не поймет, что пришедший запрос нужно направить именно в вашу базу. Убедитесь, что атрибут rootUrl в файле совпадает с тем, что вы используете в запросе, с точностью до регистра!
Если мы используем длинные пути с большим количеством параметров (как в примере выше, где 7 сегментов), стандартные настройки безопасности IIS могут заблокировать такой запрос. Это классифицируется как "Request Filtering".
Проанализируем настройки фильтрации запросов в консоли управления IIS:
Даже если у пользователя в 1С установлены "Полные права", для доступа к HTTP-сервисам необходимо специальное право. Разберем этот момент подробнее:
В ролях пользователя, под которым выполняется подключение (или в параметрах публикации, если используется анонимный вход), должно быть установлено право «Удаленный доступ (HTTP)» (в некоторых версиях — Remote desktop / HTTP access). Если этого права нет конкретно для данного HTTP-сервиса, система безопасности 1С может вернуть 404 ошибку вместо 403 (Доступ запрещен), чтобы не давать злоумышленнику информации о существовании ресурса.
Также проверим права на уровне операционной системы для пользователя IUSR (или того пользователя, от имени которого запущен пул приложений IIS):
wsapiex.dll).bin и временные папки C:\Windows\Temp.Для веб-серверов на базе Linux (Apache) и для самой платформы 1С регистр символов в URL имеет значение. Если в конфигурации Root URL прописан как HTTPCallback, а вы обращаетесь к нему как httpcallback, вы гарантированно получите ошибку 404. Всегда проверяйте соответствие заглавных и строчных букв в корневом адресе и именах шаблонов.
Подводя итог: если вы столкнулись с ошибкой 404 при живых веб-сервисах, не спешите переустанавливать платформу. Сначала проверьте количество сегментов в шаблоне, убедитесь в отсутствии скрытых символов (переписав строку руками) и загляните в файл default.vrd, чтобы убедиться, что сервис там действительно опубликован.