Мы используем клиент, написанный на C#. net 4.5 Консольное приложение для использования веб-сервиса (наш веб-сервис поддерживает TLS и не поддерживает SSL). В 99 процентах случаев он работает без проблем, но иногда мы получаем сообщение об ошибке «Запрос был прерван: не удалось создать безопасный канал SSL / TLS» случайным образом. Через пару миллисекунд он также вернется в нормальное состояние. Операционная система клиентской машины: Windows server 2012 r2. Это же приложение работает без проблем с Windows 10.
static async Task<string> CheckStudentStatus(string studentID)
{
string studentstat = "error";
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
try
{
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://EndpointURL" + studentID))
{
request.Headers.TryAddWithoutValidation("Accept", "application/json");
request.Headers.TryAddWithoutValidation("Connection", "Keep-Alive");
request.Headers.TryAddWithoutValidation("Authorization", "Bearer AuthenticationToken");
var response = await httpClient.SendAsync(request);
var responseJson = System.Threading.Tasks.Task.Run(async () => await response.Content.ReadAsStringAsync())
.GetAwaiter().GetResult();
Console.WriteLine(responseJson.ToString());
if ((int)response.StatusCode == 200)
{
JObject joResponse = JObject.Parse(responseJson);
var studentStatus = joResponse.GetValue("StudentStatus");
string Stat = studentStatus?.ToString();
if (!string.IsNullOrWhiteSpace((Stat)))
{
studentstat = Stat;
}
}
}
}
}
catch (HttpRequestException ex)
{
Console.WriteLine("Error message: " + ex.Message);
Console.WriteLine("Stack Trace " + ex.StackTrace);
Console.WriteLine("Inner exception " + ex.InnerException.Message);
}
return studentstat;
}