У меня есть приложение, которое отправляет данные на сервер с помощью HTTPS POST. Для этого я использую объект System.Net.WebClient. Вот функция, которая отправляет некоторые данные:
private byte[] PostNameValuePairs(string uri, NameValueCollection pairs)
{
byte[] response;
String responsestring = "";
using (WebClient client = new WebClient())
{
client.Headers = GetAuthenticationHeader();
string DataSent = GetNameValueCollectionValuesString(pairs);
try
{
response = client.UploadValues(uri, pairs);
responsestring = Encoding.ASCII.GetString(response);
}
catch (Exception e)
{
responsestring = "CONNECTION ERROR: " + e.Message;
return Encoding.ASCII.GetBytes(responsestring);
}
finally
{
_communicationLogger.LogCommunication(uri, client.Headers.ToString(), DataSent, responsestring);
}
}
return response;
}
Мы передаем URI, начинающийся с https://
Это работает отлично в течение длительного времени. Сегодня мы начали получать следующую ошибку подключения: "Основное соединение было закрыто: произошла непредвиденная ошибка при отправке". Мы устранили некоторые проблемы с владельцем сервера, и они, наконец, сузили его до следующего. Они внесли изменения на свой сервер, чтобы заблокировать TLS 1.0, и сказали, что теперь нам нужно отправить наши данные, используя TLS 1.1 или 1.2.
Что мне нужно установить в моем объекте WebClient (или в другом месте моей функции), чтобы он использовал TLS 1.1 или 1.2 вместо TLS 1.0?
Мы используем .NET Framework 4.5, если это имеет значение.