Приложение Xamarin.iOS - System.Net.Sockets.SocketException: сокет не подключен - PullRequest
0 голосов
/ 18 мая 2019

У меня есть приложение Xamarin.iOS - оно использует https://github.com/Azure/azure-mobile-apps-net-client SDK для связи с мобильной службой Azure. Приложение поддерживает автономное использование - в течение некоторого времени все работает нормально, включая синхронизацию данных офлайн / онлайн-коммутатора и т. Д. Однако, в конце концов, оно получает следующую ошибку: System.Net.Sockets.SocketException: сокет не подключен. Я не знаю, как исправить эту ошибку.

Полное внутреннее исключение:

ex.InnerException.InnerException.InnerException {System.Net.Sockets.SocketException (0x80004005): сокет не подключен в System.Net.Sockets.Socket.EndSend (System.IAsyncResult asyncResult) [0x00013] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/System/net/System/Net/Sockets/Socket.cs:3876 в System.Net.Sockets.NetworkStream.EndWrite (System.IAsyncResult asyncResult) [0x00057] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/System/net/System/Net/Sockets/NetworkStream.cs:1043 } base: {System.ComponentModel.Win32Exception} ErrorCode: 10057 Сообщение: «Сокет не подключен» SocketErrorCode: System.Net.Sockets.SocketError.NotConnected Непубличные участники:

Кажется, я ничего не могу сделать, чтобы оправиться от этого исключения. Впоследствии он продолжает выдавать одно и то же исключение при каждом вызове http. Я использую Microsoft.WindowsAzure.MobileServices.MobileServiceClient для выполнения http-вызовов, а также для синхронизации автономных таблиц. После создания исключения я создал новый экземпляр MobileServiceClient, но это, похоже, не помогает. Я продолжаю получать ту же ошибку.

Полная трассировка стека исключения, вызванного вызовами https, выглядит следующим образом:

System.Net.Http.HttpRequestException: при отправке произошла ошибка запрос ---> System.Net.WebException: ошибка: SecureChannelFailure (Невозможно записать данные в транспортное соединение: сокет не подключен.) ---> System.IO.IOException: невозможно записать данные в транспортное соединение: розетка не подключена. ---> System.Net.Sockets.SocketException: сокет не подключен в System.Net.Sockets.Socket.EndSend (System.IAsyncResult asyncResult) [0x00013] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/System/net/System/Net/Sockets/Socket.cs:3876 в System.Net.Sockets.NetworkStream.EndWrite (System.IAsyncResult asyncResult) [0x00057] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/System/net/System/Net/Sockets/NetworkStream.cs:1043 --- Конец внутренней трассировки стека исключений --- в System.Net.Sockets.NetworkStream.EndWrite (System.IAsyncResult asyncResult) [0x0007c] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/System/net/System/Net/Sockets/NetworkStream.cs:1054 на System.IO.Stream + <> c.b__53_1 (System.IO.Stream поток, System.IAsyncResult asyncResult) [0x00000] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/io/stream.cs:750 в System.Threading.Tasks.TaskFactory 1+FromAsyncTrimPromise 1 [TResult, TInstance] .Complete (TInstance thisRef, System.Func`3 [T1, T2, TResult] endMethod, System.IAsyncResult asyncResult, System.Boolean требуется синхронизация) [0x00000] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/FutureFactory.cs:1292

--- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение ---

в Mono.Net.Security.MobileAuthenticatedStream.InnerWrite (System.Boolean sync, System.Threading.CancellationToken cancellationToken) [0x0008b] в/Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs:764 в Mono.Net.Security.AsyncProtocolRequest.ProcessOperation (System.Threading.CancellationToken cancellationToken) [0x0014f] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/Mono.Net.Security/AsyncProtocolRequest.cs:230 в Mono.Net.Security.AsyncProtocolRequest.StartOperation (System.Threading.CancellationToken cancellationToken) [0x00046] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/Mono.Net.Security/AsyncProtocolRequest.cs:187 в Mono.Net.Security.MobileAuthenticatedStream.ProcessAuthentication (System.Boolean запускается синхронно, Параметры Mono.Net.Security.MonoSslAuthenticationOptions, System.Threading.CancellationToken cancellationToken) [0x0024c] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs:396 в Mono.Net.Security.MonoTlsStream.CreateStream (Туннель System.Net.WebConnectionTunnel, System.Threading.CancellationToken cancellationToken) [0x00126] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/Mono.Net.Security/MonoTlsStream.cs:129 в System.Net.WebConnection.CreateStream (System.Net.WebOperation операция, System.Boolean повторно используется, System.Threading.CancellationToken cancellationToken) [0x00170] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/System.Net/WebConnection.cs:222 --- Конец трассировки стека внутренних исключений --- 2019-05-17 21: 16: 07.482 pinnacle_wh.iOS [379: 49127] в System.Net.WebConnection.CreateStream (Операция System.Net.WebOperation, System.Boolean используется повторно, System.Threading.CancellationToken cancellationToken) [0x00208] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/System.Net/WebConnection.cs:234 в System.Net.WebConnection.InitConnection (System.Net .WebOperation операция, System.Threading.CancellationToken cancellationToken) [0x000f7] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/System.Net/WebConnection.cs:263 в System.Net.WebOperation.Run () [0x00052 ] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/System.Net/WebOperation.cs:268 в System.Net.WebCompletionSource 1[T].WaitForCompletion () [0x00094] in <cfeb875a95684ad09f58680b02e4aa2c>:0 at System.Net.HttpWebRequest.RunWithTimeoutWorker[T] (System.Threading.Tasks.Task 1 [TResult] workerTask, System.Int32 тайм-аут, прерывание System.Action, System.Func 1[TResult] aborted, System.Threading.CancellationTokenSource cts) [0x000f8] in <cfeb875a95684ad09f58680b02e4aa2c>:0 at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x00019] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.2/src/Xamarin.iOS/mcs/class/System/System.Net/HttpWebRequest.cs:1200 at System.Threading.Tasks.TaskFactory 1 [TResult] .FromAsyncCoreLogic (System.IAsyncResult iar, System.Func 2[T,TResult] endFunction, System.Action 1 [T] endAction, System.Threading.Tasks.Task`1 [TResult] обещание, System.Boolean требует синхронизации) [0x0000f] в <91e0283eca55453fa9b161bf2de4edfd>: 0 --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение ---

в System.Net.Http.HttpClientHandler.SendAsync. (Запрос System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken cancellationToken) [0x003d3] в /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:402 --- Конец внутренней трассировки стека исключений --- в System.Net.Http.HttpClientHandler.SendAsync (Запрос System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken cancellationToken) [0x0046c] в /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:406 в PinnacleWareHouser.Helpers.AuthenticationDelegatingHandler.SendAsync (Запрос System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken cancellationToken) [0x0019f] в /Users/sameer/projects/PinnacleWareHouser/PinnacleWareHouser/Helpers/AuthenticationDelegatingHandler.cs:59 в System.Net.Http.HttpClient.SendAsyncWorker(Запрос System.Net.Http.HttpRequestMessage, System.Net.Http.HttpCompletionOption completeOption, System.Threading.CancellationToken cancellationToken) [0x00080] в /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs:276 в Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.SendRequestAsync (System.Net.Http.HttpClient клиент, System.Net.Http.HttpRequestMessage запрос, System.Boolean sureResponseContent, System.Threading.CancellationToken cancellationToken) [0x0007a] в <8cb0059c34954d1285025a31cdcda32d>: 0 в Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.RequestAsync (System.Boolean UseHandlers, метод System.Net.Http.HttpMethod, System.String uriPathAndQuery, Пользователь Microsoft.WindowsAzure.MobileServices.MobileServiceUser, Содержимое System.String, System.Boolean sureResponseContent, System.Collections.Generic.IDictionary 2[TKey,TValue] requestHeaders, System.Threading.CancellationToken cancellationToken) [0x000f0] in <8cb0059c34954d1285025a31cdcda32d>:0 at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.ReadAsync (System.String uriString, Microsoft.WindowsAzure.MobileServices.MobileServiceFeatures features) [0x0009c] in <8cb0059c34954d1285025a31cdcda32d>:0 2019-05-17 21:16:07.483 pinnacle_wh.iOS[379:49127] at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.ReadAsync (System.String query, System.Collections.Generic.IDictionary 2 [TKey, TValue] параметры, Microsoft.WindowsAzure.MobileServices.MobileServiceFeatures функции) [0x00136] в <8cb0059c34954d1285025a31cdcda32d>: 0 в Microsoft.WindowsAzure.MobileServices.Sync.PullAction.ProcessTableAsync () [0x00134] в <8cb0059c34954d1285025a31cdcda32d>: 0 в Microsoft.WindowsAzure.MobileServices.Sync.TableAction.ExecuteAsync () [0x00251] в <8cb0059c34954d1285025a31cdcda32d>: 0 в Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceSyncContext.ExecuteSyncAction (Действие Microsoft.WindowsAzure.MobileServices.Sync.SyncAction) [0x00090] в <8cb0059c34954d1285025a31cdcda32d>: 0 в Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceSyncContext.PullAsync (System.String tableName, Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceTableKind tableKind, System.String queryId, System.String запрос, Microsoft.WindowsAzure.MobileServices.MobileServiceRemoteTableOptions options, System.Collections.Generic.IDictionary 2[TKey,TValue] parameters, System.Collections.Generic.IEnumerable 1 [T] relatedTables, Microsoft.WindowsAzure.MobileServices.MobileServiceObjectReader считыватель, System.Threading.CancellationToken cancellationToken, Microsoft.WindowsAzure.MobileServices.Sync.PullOptions pullOptions) [0x00361] в <8cb0059c34954d1285025a31cdcda32d>: 0 в PinnacleWareHouser.Clients.AzureCloudTableClient`1 [T] .PullAsync () [0x0007c] в: 0 в PinnacleWareHouser.Services.AzureCloudService.PullTableAsync [T] () [0x0016a] в: 0

1 Ответ

0 голосов
/ 22 мая 2019

Я думаю, что проблема была вызвана из-за ошибки в моем коде. Экземпляр объекта Microsoft.WindowsAzure.MobileServices.MobileServiceClient собирал мусор в Mono, но базовый сокет не очищался в iOS.

...