@rocket_media

Как отключить SSL при использовании WebClient?

Приветствую тебя, странник!

Я написал небольшое консольное приложение для работы с телеграм-ботом. И оно прекрасно работает на моем ноуте. Но на ПК, который с обираюсь использовать как сервер для приложения, возникается ошибка во время исполнения этого кода:

try {
    var webClient = new WebClient();
    webClient.DownloadString($"{startUrl}/sendMessage?chat_id={messageFromId}&text=" + number.ToString());
}

 catch (Exception e){
    Console.WriteLine(e.ToString());
}


В Exception я вижу следующее:

> System.Net.WebException: The SSL connection could not be established,
> see inner exception. Unable to read data from the transport
> connection: Удаленный хост принудительно разорвал существующее
> подключение..  ---> System.Net.Http.HttpRequestException: The SSL
> connection could not be established, see inner exception.  --->
> System.IO.IOException: Unable to read data from the transport
> connection: Удаленный хост принудительно разорвал существующее
> подключение..  ---> System.Net.Sockets.SocketException (10054):
> Удаленный хост принудительно разорвал существующее подключение.    ---
> End of inner exception stack trace ---    at
> System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError
> error, CancellationToken cancellationToken)    at
> System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16
> token)    at System.Net.FixedSizeReader.ReadPacketAsync(Stream
> transport, AsyncProtocolRequest request)    at
> System.Net.Security.SslStream.ThrowIfExceptional()    at
> System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult
> lazyResult)    at
> System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult
> result)    at
> System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult
> asyncResult)    at
> System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__65_1(IAsyncResult
> iar)    at
> System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult
> iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean
> requiresSynchronization)
> --- End of stack trace from previous location where exception was thrown ---


Как мне неграмотному, побороть этого дракона?

Спасибо!
  • Вопрос задан
  • 1021 просмотр
Пригласить эксперта
Ответы на вопрос 2
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Перед созданием webClient вставьте:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls


Это VB.NET, перевести на C# думаю сможете.
Ответ написан
@AlexSandrr
ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) =>
{
//custom validation
return true;
};

try {
var webClient = new WebClient();
webClient.DownloadString($"{startUrl}/sendMessage?chat_id={messageFromId}&text=" + number.ToString());
}

catch (Exception e){
Console.WriteLine(e.ToString());
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы