C # пост-запрос Windows 10 Не удалось создать безопасный канал SSL / TLS - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть метод, который запускается в рамках отметки таймера службы Windows.Обычно каждую минуту я отправляю текстовые сообщения, хранящиеся в очереди.

Предположим, что я хочу отправить 4 сообщения.

Предположим, что на каждом таймере таймера у нас есть 4 сообщения для отправки.

SMS-провайдер GateWay использует tls1.2 - если я использую ServicePointManager для установки типа протокола - такое же поведение.

Предположим, что я использую 4.6.1 Net Framework и Win 10 Pro

При первой отметке таймера каждое сообщение отправляется.На 2-м, 3-м, ..., n, таймерное сообщение 3,4,5 отправляется, но не 1-го.Всегда.Я получаю исключение от субъекта Запрос был прерван: Не удалось создать безопасный канал SSL / TLS

HttpClient.PostAsync returned   Id = 19, Status = Faulted, Method = "{null}", Result = "{not yet computed}"  System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>

Метод ниже работает как чудо, например win 7 pro, но на Win 10Pro

public async Task SendAsync(IEnumerable<Message> messages)
    {
        using (var client = new HttpClient())
        {
            foreach (Message m in messages)
            {
                _content = Extensions.SmsApiConfiguration.GetConfig();

                //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(AcceptAllCertifications);
                //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                var httpContent = new FormUrlEncodedContent(_content);

                try
                {
                    var response = await client.PostAsync(API_URL, httpContent);

                    if (response.IsSuccessStatusCode)
                    {
                        var responseContent = await response.Content.ReadAsStringAsync();
                        File.AppendAllText(@"D:\log_service.txt", Environment.NewLine + " " + responseContent);

                    }
                }
                catch (Exception ex)
                {
                    File.AppendAllText(_logFilePath, Environment.NewLine + " " + ex);
                }
            }
        }
    }

и использование его в методе onStart ()

    private void timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        // messageRepository - get messages to be send
        // SerwerSMSService - use of api external gate
        MessageService message = new MessageService(new MessageRepository(), new SerwerSMSService());

        message.SendSms();

    }

Я попробовал все, что мне удалось найти на SO, например,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...