Почему после обновления платформы 1С до версии 8.3.23 перестали работать HTTP-сервисы и как это исправить?

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

Переход на новые версии платформы 1С:Предприятие (начиная с 8.3.21, 8.3.22 и 8.3.23) часто сопровождается неожиданными проблемами в работе веб-сервисов. Одной из самых распространенных ситуаций является получение ошибки 404 Not Found при попытке обращения к ранее стабильно работавшим HTTP-сервисам. Рассмотрим детально, почему это происходит и как восстановить работоспособность системы.

Разберем основную причину: Особенности дистрибутивов и установки

Проанализируем ситуацию, с которой столкнулся автор темы. При обновлении с версии 8.3.20 на 8.3.23 часто совершается критическая ошибка — использование специализированного дистрибутива «Cервер 1С:Предприятия (64-bit)» вместо полного комплекта поставки. Выясним, почему это важно.

Начиная с версий 8.3.20/8.3.21, компания «1С» существенно изменила состав инсталляционных пакетов. Если раньше многие компоненты были взаимозаменяемы или дублировались, то теперь использование «тонкого» или чисто «серверного» дистрибутива может привести к отсутствию необходимых библиотек для взаимодействия с веб-сервером (IIS или Apache). Модули расширения веб-сервера требуют специфических зависимостей, которые корректно регистрируются в системе только при использовании Windows Full Installer (полная установка платформы).

Рассмотрим шаги для исправления, если вы установили только серверную часть:

  1. Удалите текущую установку платформы через панель управления (если была установлена только серверная часть).
  2. Скачайте полный дистрибутив платформы (например, setup.exe из архива полной версии).
  3. Запустите установку с правами администратора.
  4. В списке компонентов обязательно выберите «Модули расширения веб-сервера».
  5. После установки выполните перепубликацию информационной базы из конфигуратора.

Проанализируем изменения в работе HTTP-протокола (версии 8.3.21+)

Если полная переустановка платформы не помогла, нам необходимо проверить код самих запросов. Злые языки (и официальная документация) подтверждают, что в новых версиях 1С ужесточила соблюдение стандартов HTTP. Рассмотрим важный аспект: тело запроса в GET-операциях.

В старых версиях (до 8.3.20 включительно) платформа позволяла обрабатывать GET-запросы, содержащие тело (body). Однако, согласно стандартам RFC, GET-запрос не должен иметь полезной нагрузки в теле. Начиная с версии 8.3.21, если веб-сервер получает GET или DELETE запрос с телом, он может вернуть ошибку 404 или 405, так как модуль расширения 1С теперь более строго интерпретирует такие вызовы.

Посмотрим на пример того, как нельзя делать в новых версиях:


// ПРИМЕР ОШИБКИ: Попытка отправить данные в теле GET-запроса
// На платформе 8.3.23 это приведет к ошибке 404
Запрос = Новый HTTPЗапрос("/hs/MyService/v1/GetData");
Запрос.УстановитьТелоИзСтроки("{\"id\": 123}"); // ТАК ДЕЛАТЬ НЕЛЬЗЯ
Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);

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

Проверим конфигурационные файлы web.config и default.vrd

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

Найдите строку, указывающую на библиотеку wsisapi.dll. Она должна соответствовать разрядности вашего пула приложений и версии установленной платформы. Посмотрим на структуру пути:


<!-- Пример корректного пути для 64-битной платформы 8.3.23 -->
<add name="1C_Web_Extension" 
     path="*" 
     verb="*" 
     modules="IsapiModule" 
     scriptProcessor="C:\Program Files\1cv8\8.3.23.2040\bin\wsisapi.dll" 
     resourceType="Unspecified" 
     requireAccess="Execute" />

Важный нюанс: Если вы вручную меняете путь в web.config с версии 8.3.20 на 8.3.23, убедитесь, что в системном окружении (PATH) или в настройках прав доступа нет конфликтов. Модуль wsisapi.dll новой версии может зависеть от библиотек Visual C++ Redistributable, которые не поставляются с «урезанным» серверным инсталлятором, о чем мы говорили в первом пункте.

Разберем проблему прав доступа к каталогу bin

После обновления платформы создается новая папка в C:\Program Files\1cv8\. Часто системные администраторы забывают, что пользователь, от имени которого запущен веб-сервер (например, IIS_IUSRS), должен иметь права на чтение и выполнение в этой новой директории. Если прав недостаточно, веб-сервер не сможет загрузить wsisapi.dll, что в некоторых конфигурациях IIS интерпретируется как 404 (ресурс не найден), так как обработчик не смог инициализироваться.

Рекомендуем выполнить следующие действия:

  1. Откройте свойства папки C:\Program Files\1cv8\8.3.23.XXXX\bin.
  2. Перейдите на вкладку «Безопасность».
  3. Убедитесь, что группа IIS_IUSRS (или IUSR) имеет права «Чтение и выполнение», «Список содержимого папки», «Чтение».

Чувствительность к регистру в URL

Проанализируем еще одно изменение, замеченное в последних релизах 8.3.22/8.3.23. Платформа стала более чувствительна к регистру символов в URL HTTP-сервисов. Если в метаданных конфигурации ваш сервис называется MyExchange, а корень URL — v1, то обращение по пути /myexchange/V1/ может вернуть 404. Ранее платформа прощала такие различия, теперь же рекомендуется строго соблюдать регистр, указанный в конфигураторе 1С.

Итоги и чек-лист для проверки

Для восстановления работы HTTP-сервисов после обновления платформы, выполните проверку по шагам:

  1. Полная установка: Убедитесь, что платформа установлена через setup.exe из полного дистрибутива, а не через msi-пакет только для сервера.
  2. Разрядность: Проверьте, что разрядность установленной платформы (x64) совпадает с настройками пула приложений в IIS (параметр «Разрешены 32-разрядные приложения» должен стоять в False для 64-битной wsisapi.dll).
  3. Перепубликация: Выполните удаление публикации и создание новой через Конфигуратор от имени администратора.
  4. Проверка GET-запросов: Убедитесь, что внешние системы не присылают тело (body) в GET-запросах.
  5. Файл default.vrd: Проверьте, что в файле default.vrd указано корректное имя базы и настройки доступа к HTTP-сервисам (параметр httpServices должен быть разрешен).

Соблюдение этих правил позволит вам избежать большинства проблем, связанных с обновлением инфраструктуры веб-сервисов на современных версиях платформы 1С.

← На главную