#ssl #xamarin.forms #asp.net-core-webapi
#ssl #xamarin.forms #asp.net-core-webapi
Вопрос:
В сети есть ASP.NET Основные приложения веб-API и Xamarin Forms. API имеет подстановочный SSL, а мобильное приложение Xamarin использует методы API через библиотеку HttpClient. Код метода публикации приведен ниже, и мобильное приложение использует Rollbar для ведения журнала в облаке. Некоторые клиентские приложения выдают исключения, описанные ниже, и не могут понять, почему? Кстати, веб-API работает на двух серверах за службой балансировки нагрузки.
var client = new HttpClient(handler); client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Add("X-Env", "MOBILE_API"); var response = await client.PostAsync(url, jsonParam);
Сообщение об исключении : System.Net.Http.HttpRequestException: Не удалось установить SSL-соединение, см. Внутреннее исключение. —gt; Исключение System.IO.IOException: Не удается прочитать данные из транспортного соединения: Сетевая подсистема не работает. —gt;gt; System.Net.Сокеты.Исключение SocketException: Сетевая подсистема не работает — Конец трассировки внутреннего стека исключений — в System.Net.Сокеты.Сокет Ожидаемый SocketAsyncEventArgs.Исключение throwException (System.Net.Сокеты.Ошибка SocketError) [0x00007] в :0 в System.Net.Sockets.Сокет Ожидаемый сокетasynceventargs.GetResult (токен System.Int16) [0x00022] в :0 в Системе.Нарезание резьбы.Задачи.ValueTask`1 ValueTaskSourceAsTask lt;gt;c[TResult].lt;.cctorgt;b__4_0 (Система.Состояние объекта) [0x00030] в lt;3921671317b843f6a1960ec6d235bd90gt;:0 — Конец трассировки стека из предыдущего места, где было создано исключение —
в Mono.Net.Security.Мобильный аутентифицированный поток.Внутреннее чтение (Система.Логическая синхронизация, System.Int32 Запрошенный размер, Система.Нарезание резьбы.CancellationToken CancellationToken) [0x00104] в :0 в Mono.Net.Security.AsyncProtocolRequest.Внутреннее чтение (Система.Нарезание резьбы.CancellationToken CancellationToken) [0x000ac] в :0 в Mono.Net.Security.AsyncProtocolRequest.Управление процессом (Система.Нарезание резьбы.CancellationToken CancellationToken) [0x00093] в :0 в Mono.Net.Security.AsyncProtocolRequest.Начало работы (Система.Нарезание резьбы.CancellationToken CancellationToken) [0x0008b] в :0 в Моно.Сеть.Безопасность.Мобильный аутентифицированный поток.Проверка подлинности процесса (Система.Логическое значение выполняется синхронно, Mono.Net.Security.Опции для проверки подлинности, Система.Нарезание резьбы.CancellationToken CancellationToken) [0x00262] в :0 в System.Net.Http.ConnectHelper.установлениеslconnectionasynccore (поток System.IO.Stream, Система.Net.Безопасность.sslclientauthenticationопции SSLOptions, Система.Нарезание резьбы.CancellationToken CancellationToken) [0x000c3] в lt;685733035f754577bd362e6e4e46c46fgt;:0 — Конец трассировки внутреннего стека исключений — lt;685733035f754577bd362e6e4e46c46fgt;в системе.Чистая задача оценки.Http.ConnectHelper.УстановитЬslConnectionAsyncCore (поток System.IO.Stream, Система.Net.Безопасность.sslclientauthenticationопции SSLOptions, Система.Нарезание резьбы.CancellationToken CancellationToken) [0x00102] в lt;685733035f754577bd362e6e4e46c46fgt;:0 в пуле System.Net.Http.HTTPConnectionPool.CreateConnectionAsync (запрос System.Net.Http.HttpRequestMessage, Система.Нарезание резьбы.CancellationToken CancellationToken) [0x00322] в lt;685733035f754577bd362e6e4e46c46fgt;:0 в пуле System.Net.Http.HTTPConnectionPool.WaitForCreatedConnectionAsync (Система.Нарезание резьбы.Задачи. 1[TResult] creationTask) [0x000a2] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.HttpConnectionPool.SendWithRetryAsync (System.Net.Http.HttpRequestMessage request, System.Boolean doRequestAuth, System.Threading.CancellationToken cancellationToken) [0x00089] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.RedirectHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x000ba] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at ACOMobile.Handler.TimeOutHandler.SendAsync (System.Net.Http.HttpRequestMessage req, System.Threading.CancellationToken ct) [0x000ad] in lt;782ffc61b995409cbe79d4b7cd06734bgt;:0 at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task
1[TResult] Задача отправки, запрос System.Net.Http.HttpRequestMessage, Система.Нарезание резьбы.CancellationTokenSource cts, Система.Логическое удаление) [0x0017e] в lt;685733035f754577bd362e6e4e46c46fgt;:0 в файле ACOMobile.Base.BaseClient.Сообщение (ACOMobile.Base.Базовая постмодель постмодель) [0x001e8] в lt;782ffc61b995409cbe79d4b7cd06734bgt;:0 Внутреннее исключение : System.IO.IOException: Не удается прочитать данные из транспортного соединения: Сетевая подсистема не работает. —lt;782ffc61b995409cbe79d4b7cd06734bgt;gt; System.Net.Sockets.Исключение SocketException: Сетевая подсистема не работает — Конец трассировки стека внутренних исключений — в системе.Сеть.Розетки.Сокет Ожидаемый SocketAsyncEventArgs.Исключение throwException (System.Net.Сокеты.Ошибка SocketError) [0x00007] в :0 в System.Net.Sockets.Сокет Ожидаемый сокетasynceventargs.GetResult (токен System.Int16) [0x00022] в :0 в системе.Нарезание резьбы.Задачи.ValueTask`1 ValueTaskSourceAsTask lt;gt;c[TResult].lt;.cctorgt;b__4_0 (Система.Состояние объекта) [0x00030] в lt;3921671317b843f6a1960ec6d235bd90gt;:0 — Конец трассировки стека из предыдущего местоположения, где было вызвано исключение —
at Mono.Net.Security.MobileAuthenticatedStream.InnerRead (System.Boolean sync, System.Int32 requestedSize, System.Threading.CancellationToken cancellationToken) [0x00104] in :0 at Mono.Net.Security.AsyncProtocolRequest.InnerRead (System.Threading.CancellationToken cancellationToken) [0x000ac] in :0 at Mono.Net.Security.AsyncProtocolRequest.ProcessOperation (System.Threading.CancellationToken cancellationToken) [0x00093] in :0 at Mono.Net.Security.AsyncProtocolRequest.StartOperation (System.Threading.CancellationToken cancellationToken) [0x0008b] in :0 at Mono.Net.Security.MobileAuthenticatedStream.ProcessAuthentication (System.Boolean runSynchronously, Mono.Net.Security.MonoSslAuthenticationOptions options, System.Threading.CancellationToken cancellationToken) [0x00262] in :0 at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore (System.IO.Stream stream, System.Net.Security.SslClientAuthenticationOptions sslOptions, System.Threading.CancellationToken cancellationToken) [0x000c3] in lt;685733035f754577bd362e6e4e46c46fgt;:0 StackTrace : at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore (System.IO.Stream stream, System.Net.Security.SslClientAuthenticationOptions sslOptions, System.Threading.CancellationToken cancellationToken) [0x00102] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.HttpConnectionPool.CreateConnectionAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x00322] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (System.Threading.Tasks.ValueTask 1[TResult] creationTask) [0x000a2] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.HttpConnectionPool.SendWithRetryAsync (System.Net.Http.HttpRequestMessage request, System.Boolean doRequestAuth, System.Threading.CancellationToken cancellationToken) [0x00089] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at System.Net.Http.RedirectHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x000ba] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at ACOMobile.Handler.TimeOutHandler.SendAsync (System.Net.Http.HttpRequestMessage req, System.Threading.CancellationToken ct) [0x000ad] in lt;782ffc61b995409cbe79d4b7cd06734bgt;:0 at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task
1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) [0x0017e] in lt;685733035f754577bd362e6e4e46c46fgt;:0 at ACOMobile.Base.BaseClient.Post (ACOMobile.Base.BasePostModel postModel) [0x001e8] in lt;782ffc61b995409cbe79d4b7cd06734bgt;:0 Message : The SSL connection could not be established, see inner exception. Data : System.Collections.ListDictionaryInternal HResult : -2146232800 Source : mscorlib Explanation : Unable to post data to API!