Почему HTTP-сервисы 1С выдают ошибку 404 и как это исправить

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

При разработке и публикации HTTP-сервисов в экосистеме 1С:Предприятие программисты часто сталкиваются с ситуацией, когда база данных успешно открывается через веб-клиент, SOAP-сервисы (WS) работают исправно, но при обращении к HTTP-сервису (HS) сервер возвращает досадную ошибку 404 (Not Found). Это создает впечатление, что сервис просто не существует в папке публикации, хотя в конфигураторе он описан, а в окне публикации отмечен галочкой.

В рамках данной статьи мы подробно разберем причины возникновения этой ошибки, проанализируем влияние настроек веб-серверов IIS и Apache, изучим структуру файла публикации и выясним, почему регистр букв в URL может играть решающую роль.

Причина №1: Чувствительность к регистру в URL-адресах

Как показывает практика и опыт многих разработчиков, одной из самых неочевидных причин ошибки 404 является использование заглавных (прописных) букв в именах сервиса или его корневых URL. Рассмотрим ситуацию: вы создали сервис с именем EmployeeData, используя конструктор API и корневым URL Employee. При обращении по адресу .../hs/Employee сервер может выдать 404.

Решение: Проанализируем настройки сервиса в конфигураторе. Нам необходимо изменить все названия на строчные (маленькие) буквы. Попробуем переименовать корневой URL в employee и метод в getdata. После этого необходимо заново опубликовать базу. Как отмечают пользователи, именно приведение всех составляющих пути к нижнему регистру зачастую мгновенно решает проблему на современных версиях IIS (особенно на IIS 10 в Windows Server 2019), что упрощает последующую настройку Swagger.

Причина №2: Проверка файла публикации default.vrd

Когда мы публикуем решение на веб-сервере, 1С создает специальный файл конфигурации default.vrd. Если HTTP-сервис не прописан в этом файле или прописан некорректно, веб-сервер не поймет, что запрос нужно передать модулю расширения 1С. Проанализируем содержимое этого файла, который обычно находится в папке с публикацией (например, C:\inetpub\wwwroot\ваша_база\).

Найдем секцию <httpServices>. В ней обязательно должен присутствовать ваш сервис. Пример правильной записи:


<httpServices>
    <service name="ИмяВашегоСервиса" rootUrl="employee" enable="true" reuseSessions="autouse" />
</httpServices>

Обратите внимание на параметр enable="true". Если он установлен в false или секция вовсе отсутствует, сервис будет недоступен. Рекомендуется также проверить наличие файла web.config в этой же папке (для IIS), который отвечает за перенаправление запросов.

Причина №3: Ошибки в формировании URL-запроса

Иногда ошибка 404 возникает не из-за сервера, а из-за неверно сформированной строки запроса в коде 1С или в адресной строке браузера. Рассмотрим распространенную ошибку при использовании объекта HTTPЗапрос. Выясним причину: часто разработчики ошибочно включают адрес сервера в путь запроса.

Неправильно:


МойСайт = "http://localhost/base_name";
HTTPЗапрос = Новый HTTPЗапрос(МойСайт + "/hs/api/v1/get_list");

В данном случае система попытается найти ресурс по адресу, где localhost будет дублироваться или интерпретироваться неверно. Правильный подход заключается в разделении адреса сервера и относительного пути:


Соединение = Новый HTTPСоединение("localhost"); // Здесь только хост
ПутьКСервису = "/base_name/hs/employee/v1/all";
Запрос = Новый HTTPЗапрос(ПутьКСервису);
Ответ = Соединение.Получить(Запрос);

Причина №4: Настройка обработчиков в IIS (Handler Mappings)

Если вышеуказанные действия не помогли, нам стоит углубиться в настройки самого Internet Information Services (IIS). Проблема может заключаться в том, что IIS пытается найти физическую папку /hs/ в каталоге публикации, не находя её, выдает 404, так как не знает, что этот путь должен обрабатываться библиотекой 1С (wsap24.dll).

Разберем шаги по настройке обработчиков:

  1. Откроем Диспетчер служб IIS.
  2. Перейдем к нашей опубликованной базе в дереве слева.
  3. Откроем раздел "Сопоставления обработчиков" (Handler Mappings).
  4. Убедимся, что в списке есть записи для 1С. Если их нет, необходимо добавить "Сопоставление сценария" для пути hs/*, указав путь к расширению веб-сервера 1С (библиотека в папке bin установленной платформы).

Также важно проверить раздел "Ограничения ISAPI и CGI" на уровне всего сервера. Если используемой версии wsap24.dll нет в списке разрешенных, запросы будут блокироваться сервером с кодом 404 или 403.

Причина №5: Битность платформы и веб-сервера

Рассмотрим технический нюанс: несовпадение разрядности (битности) установленной платформы 1С и веб-сервера. Если вы используете 64-битную версию Windows и 64-битный Apache/IIS, но при этом установили 32-битную платформу 1С (или наоборот), модули расширения веб-сервера не смогут корректно загрузиться. Выясним, что в таком случае веб-сервис может работать (по инерции или через другие механизмы), а HTTP-сервисы — нет. Всегда стремитесь к тому, чтобы битность веб-сервера и платформы 1С совпадала (например, x64 для обоих компонентов).

Дополнительные рекомендации

Если после всех манипуляций ошибка сохраняется, выполните следующие действия:

Таким образом, мы проанализировали основные факторы, вызывающие 404 ошибку. Чаще всего решение кроется в регистре символов или в настройках файла default.vrd. Тщательная проверка этих параметров позволит вам успешно запустить HTTP-интеграцию.

← На главную