У меня есть метод, который запускается в рамках отметки таймера службы 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, например,