WebRequest переключается на HTTPS через 2 минуты.

 

MetaTrader 5 build 5833.


WebRequest используется для отправки запросов в LM Studio. На Windows 11 у меня проблем нет. Но клиент на Windows 10 сообщает о такой проблеме:

«Я провёл ещё несколько тестов с замером времени и теперь могу сказать, что проблема с HTTP/HTTPS POST-запросами заключается в следующем: HTTPS используется, если задача отправляется спустя более 2 минут после предыдущего POST; а HTTP используется, если задача укладывается в 2 минуты после последнего POST. Видимой связи с параметром timeout нет. Воспроизводится стабильно.»

Если запрос приходит по HTTPS, LM Studio его не принимает.

Есть одно объяснение. Оно может всё усложнить, но ничего не решает.


EA всегда отправляет локальный запрос как http://127.0.0.1 — нигде в коде нет HTTPS для локального сервера, поэтому он не может переключиться сам по себе. Это делает стек Windows WinINet.
«2 минуты» = таймаут простоя (idle timeout) пула keep-alive соединений WinINet. TLS-контекст от предыдущего HTTPS-запроса «протекает» на новый HTTP-дескриптор.

P.S. Timeout в WebRequest по-прежнему не работает. Стоит жёсткие 120 секунд.
 

Проверим и исправим.

Проблема может быть, так как на реконнекте видимо срабатывает приоритет https вместо оригинального http запроса.

 

Получилось мне тоже повторить этот эффект


1) Отправляешь Webrequest HTTP

2) Через секунд 30 Отправляешь Webreuqest HTTPS

3) Ждешь 3 минуты

4) Отправляешь Webrequest HTTP - а он отправляется HTTPS


Диво дивное. Если отправить в течении минуты после HTTPS опять HTTP , то всё норм.