Citrom67 Ответов: 1

Почему я получаю сбой SSL - соединения


Я вроде как новичок в c# и никогда им не пользовался HttpClient и так как я использую его, у меня есть случайный сбой соединения SSL. Я пробовал такие вещи, как добавление HttpClientHandler но это не помогло, и я действительно не знаю, где "увидеть внутреннее исключение", потому что программа не останавливается, а просто продолжает работать, как будто ничего не произошло.
Сообщение об ошибке:
Не удалось установить SSL-соединение, см. Внутреннее исключение


Что я уже пробовал:

HttpClientHandler clientHandler = new HttpClientHandler();
            clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
            HttpClient client = new HttpClient(clientHandler);

Richard MacCutchan

Что говорит вам внутреннее исключение?

Citrom67

Я не знаю, потому что я не знаю, как читать внутреннее исключение, единственное, что я нашел о том, как проверить внутреннее исключение, - это через эту кнопку "просмотреть детали", но я не получаю ничего подобного.https://i.imgur.com/gp53Em1.png

Richard MacCutchan

Ну, это то, что вам срочно нужно узнать. Вы не можете продолжать писать код, если не понимаете основ отладки.

1 Ответов

Рейтинг:
8

Gerry Schmitz

try {
...

} catch ( Exception ex ) {
   ...

   if ( ex.InnerException != null ){
     "display" ex.InnerException.Message;
   }
}


sencsk

Привет, команда, я тоже столкнулся с таким же исключением. здесь ниже я разместил свое внутреннее исключение. Я включил TLS 1.0,1.1 и 1.2 версии в реестре сервера.
Но не повезло


Request and Response: System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.__ ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.__ ---> System.ComponentModel.Win32Exception (0x80090326): The message received was unexpected or badly formatted.__ --- End of inner exception stack trace ---__ at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)__ at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)__ at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)__ at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)__ at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)__ at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)__--- End of stack trace from previous location where exception was thrown ---__ 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 ---__ at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)__ --- End of inner exception stack trace ---__ at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)__ at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)__ at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)__ at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)__ at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)__ at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)__ at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)__ at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)

Gerry Schmitz

Я говорю, что ваша "аутентификация" не удалась; что-то о плохом сообщении. Нет смысла, не видя кода. Откройте свой собственный вопрос и не копайтесь в "старых" (мертвых) вещах.