При работе с HTTP-сервисами в среде 1С:Предприятие 8.3, особенно в файловом режиме, разработчики часто сталкиваются с труднообъяснимым поведением: запросы «зависают» на этапе создания сеанса. Проблема выглядит крайне специфично: запрос не доходит до программного кода (даже до первой строки метода), а в журнале регистрации фиксируются только события Сеанс.Аутентификации и Сеанс.Начало. При этом ситуация временно исправляется открытием Конфигуратора. Давайте подробно разберем, почему это происходит и как настроить систему для стабильной работы.
Проанализируем ситуацию: когда веб-сервер (Apache или IIS) получает Post или Get запрос, предназначенный для 1С, расширение веб-сервера (модули wsap24.dll или gws.dll) пытается инициализировать сеанс в базе данных. Если мы заглянем в Журнал регистрации, то увидим, что этап аутентификации пройден, но сам вызов метода HTTP-сервиса не начинается.
Интересной особенностью является влияние Конфигуратора. Запуск Конфигуратора принудительно инициализирует внутренние механизмы управления базой данных и инфраструктуру отладки. Если после его запуска запросы начинают «проходить», это прямой сигнал о том, что проблема кроется в подсистеме отладки или в блокировках управляющих файлов файловой базы данных 1Cv8.1cd.
Основным и самым эффективным решением для платформы версии 8.3.13 (и соседних релизов) является отключение режима отладки в параметрах публикации веб-сервиса. Рассмотрим подробнее, как это сделать. В папке, куда была выполнена публикация информационной базы, находится файл default.vrd. Это XML-файл, управляющий параметрами взаимодействия веб-сервера с 1С.
Найдем в этом файле узел debug и проанализируем его параметры. Если вы видите включенную отладку, ее необходимо деактивировать:
<debug enable="false" url="" />
Почему это помогает? Когда параметр enable установлен в значение true, каждый новый HTTP-сеанс пытается соединиться с менеджером отладки. В файловом варианте, если порт отладки занят или блокируется брандмауэром, поток исполнения «замирает» в ожидании ответа от отладочного сервера. Отключение этого параметра исключает лишнее звено в цепочке инициализации запроса.
В файловом режиме работы 1С через веб-сервер критически важно правильно управлять сеансами. За это отвечает параметр reuseSessions в том же файле default.vrd. Разберем возможные значения этого параметра:
Для устранения «зависаний» в файловом режиме рекомендуется установить значение dontuse. Это предотвратит ситуации, когда новый запрос пытается занять сеанс, который уже «уснул» или заблокирован другим процессом. Пример настройки в default.vrd:
<point name="MyService"
alias="myservice.1cws"
enable="true"
reuseSessions="dontuse" />
Выясним причину, почему вход в Конфигуратор временно «оживляет» систему. Конфигуратор обычно запускается от имени пользователя с правами администратора. Веб-сервер же работает от имени системных учетных записей (например, IUSR в IIS или daemon в Apache).
Проанализируем права доступа к папке с информационной базой. Учетная запись, от которой запущен веб-сервер, должна иметь полные права (чтение, запись, изменение) не только на файл 1Cv8.1cd, но и на всю папку, так как в момент обращения создаются временные файлы блокировок 1Cv8.1cl и другие служебные объекты. Если прав недостаточно, процесс аутентификации может бесконечно ожидать возможности записать данные во временный файл, созданный ранее администратором (при входе в Конфигуратор).
Выполним следующие шаги для проверки:
Temp), так как 1С активно использует её при работе через веб-расширение.Платформа 8.3.13.1644, упомянутая в проблеме, известна определенной нестабильностью в работе с HTTP-протоколами. Если отключение отладки не помогло, рассмотрим вариант смены версии платформы. Практика показывает, что:
При переходе на другой релиз обязательно перепубликуйте все веб-сервисы через диалог «Администрирование — Публикация на веб-сервере», чтобы обновить библиотеки расширения веб-сервера в системных папках.
Чтобы избежать повторения ситуации в будущем, проанализируем настройки антивирусного программного обеспечения. Часто антивирус блокирует доступ к файлу 1Cv8.1cd именно в момент попытки веб-сервера открыть его для нового сеанса.
Необходимо добавить в исключения антивируса:
*.1cd, *.1cl, *.cdn, *.elf.В заключение отметим, что использование файлового режима для работы с HTTP-сервисами под высокой нагрузкой не является рекомендуемым. Однако для небольших интеграций и обмена данными правильная настройка файла default.vrd с отключенной отладкой и корректно выставленные права доступа позволяют добиться стабильной работы без необходимости постоянно держать открытым Конфигуратор.