С# и 1С. Вызов RemoteCertificateValidationCallback в фоновом задании
Добрый день! Написал компоненту. Есть там такой код.
И если эту процедуру вызвать по нажатию кнопки на форме, то все замечательно отрабатывает. А вот если вызвать данную процедуру в фоновом задании, получаю ошибку. Время ожидания истекло.
Что-то не могу понять в чем разница, почему не отрабатывает в фоновом задании. И как быть если кто-то может подсказать.
AMQMessage message = new AMQMessage();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://" + Server + ":" + Port + "/v1/peek/" + Ресурс + ".json");
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
request.Credentials = new NetworkCredential(login, pass);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());
message.Строка = responseReader.ReadToEnd();
message.Код = (int)response.StatusCode;
message.КодСообщения = response.Headers["Jmsmessageid"];
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(AMQMessage));
MemoryStream stream = new MemoryStream();
jsonSerializer.WriteObject(stream, message);
byte[] json = stream.ToArray();
stream.Close();
return Encoding.UTF8.GetString(json, 0, json.Length);
ПоказатьИ если эту процедуру вызвать по нажатию кнопки на форме, то все замечательно отрабатывает. А вот если вызвать данную процедуру в фоновом задании, получаю ошибку. Время ожидания истекло.
Что-то не могу понять в чем разница, почему не отрабатывает в фоновом задании. И как быть если кто-то может подсказать.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)У меня в этой же компоненте идет обращение к базе данных SQL и все работает. А вот именно с https запросом фигня какая то. Данные в компоненту передаются только строковые. Это адрес сервера и так далее. Трассировку на уровне компоненты? Это мне MS Romote Debbuger поставить на сревак надо. Ну я почему то уверен что он на колбэке зависает.
(5)
Не надо ставить ничего, пропишите в коде журнализацию в файл, и туда же засуньте полученные параметры от 1С, тут как вариант может быть проблема с кодировкой и форматированием цифровых значений в строку. А сама то компонента инициализируется в фоновом задании?
Трассировку на уровне компоненты?
Не надо ставить ничего, пропишите в коде журнализацию в файл, и туда же засуньте полученные параметры от 1С, тут как вариант может быть проблема с кодировкой и форматированием цифровых значений в строку. А сама то компонента инициализируется в фоновом задании?
Все таки я вас дезинформировал. Клиент запускался с терминального сервера. Он не является сервером 1С. Запустил клиент на сервере 1С картина такая же как с фоновым заданием. Тот код что я опубликовал выше выполняется в цикле и на третей итерации возвращает ошибку о превышении времени ожидания. То есть дважды он нормально получает доступ, а на третий раз проблема. При этом на сервере терминалов все отрабатывает отлично. Значит дело все таки в настройке сервера 1С. Ума не приложу что смотреть. Подскажите пож.
(12) В журналах пусто. Если делать запрос к рест серверу средствами 1С - то все замечательно работает. Если же делать запрос из компоненты, то делается два запроса, на третий таймаут. В журналах и клиента и сервера пусто. Блокировка я так понимаю происходит средствами .net чтоли так как средствами 1с все работает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот