При настройке интеграций через протокол OData, вызове HTTP- или Web-сервисов, а также при запуске веб-клиента системные администраторы и разработчики нередко сталкиваются с ошибкой уровня протокола HTTP: HTTP 409 Conflict. В описании исключения обычно указывается текст: Различаются версии клиента и сервера (номер_версии_1 - номер_версии_2), клиентское приложение: Модуль расширения веб-сервера. Разберем детально, почему возникает данный сбой в архитектуре платформы «1С:Предприятие» и как его быстро устранить.
Проанализируем механизм взаимодействия веб-сервера и платформы 1С. Когда внешний потребитель обращается к OData или веб-сервису, веб-сервер (будь то Apache или IIS) не взаимодействует с базой данных или СУБД напрямую. Связующим звеном выступает специальная библиотека платформы — Модуль расширения веб-сервера.
С точки зрения кластера серверов «1С:Предприятия» этот модуль является полноценным клиентским приложением (таким же, как тонкий или толстый клиент). В архитектуре платформы заложено строгое правило: версия кластера серверов 1С и версия клиентского компонента обязаны совпадать с точностью до последнего знака номера сборки (билда). Если администратор обновил серверную часть платформы (например, до версии 8.3.27.1859), а веб-сервер продолжает обращаться к библиотекам предыдущего релиза (например, 8.3.25.1374), кластер блокирует подключение и возвращает конфликт версий.
Рассмотрим самый простой и распространенный способ решения, который автоматически обновляет параметры сопоставления библиотек.
Администрирование → Публикация на веб-сервере....default.vrd.Публиковать стандартный интерфейс OData).В процессе публикации Конфигуратор перезапишет конфигурационные параметры веб-сервера, указав пути к библиотекам актуального релиза платформы 1С.
Если веб-сервер Apache развернут отдельно или нет возможности оперативно открыть Конфигуратор, разберем ручную корректировку конфигурации.
httpd.conf в текстовом редакторе с правами администратора. Обычно он располагается в подкаталоге conf установленного Apache.
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll"
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.1859/bin/wsap24.dll"
httpd.conf.При администрировании серверов без графического интерфейса, на операционных системах Linux, а также в сценариях автоматического развертывания рекомендуется использовать штатную утилиту webinst. Она находится в каталоге bin установленной версии платформы.
Посмотрим на ключевое правило: запускать утилиту необходимо строго из каталога той платформы, на которую выполняется переход. В этом случае утилита гарантированно зарегистрирует модуль нужного релиза и правильной битности (32 или 64 бита).
cd "C:\Program Files\1cv8\8.3.27.1859\bin"
-publish):
webinst -publish -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "Srvr=Server1C;Ref=BaseName;" -confpath "C:\Apache24\conf\httpd.conf"
Если в качестве веб-сервера задействован IIS, обратим внимание на следующие технические нюансы:
wsisapi.dll. Путь к ней прописывается в разделе Сопоставления обработчиков (Handler Mappings) в файле web.config каталога публикации или глобально в applicationHost.config. При обновлении путь к wsisapi.dll должен указывать на новый релиз.w3wp.exe) могут удерживать старые DLL-библиотеки в оперативной памяти. После переопубликации перезапуска только сайта может оказаться недостаточно — выполним перезапуск соответствующего пула приложений либо перезапустим весь веб-сервер командой:
iisreset
wsisapi.dll параметр пула приложений Разрешены 32-разрядные приложения (Enable 32-Bit Applications) должен иметь значение False.В среде Linux модуль расширения представляет собой файл с расширением .so (например, wsap24.so) и располагается по пути /opt/1cv8/x86_64/<номер_версии>/. При обновлении платформы и смене версий важно убедиться, что у системного пользователя, от имени которого работает веб-сервер (обычно www-data или apache), присутствуют права на чтение и исполнение (rx) для каталога новой версии платформы и файла модуля.