Я работаю над разработкой приложения для Xamarin.Android.HTTP-вызовы прекрасно работают, когда приложение находится на переднем плане.Но недавно я заметил, что когда приложение находится в фоновом режиме, а затем выводится на передний план через 10-15 минут, ' SocketAsyncResult.CheckIfThrowDelayedException () System.Net.Sockets.SocketException: сетевая подсистема не работает '.
Трассировка стека:
HttpClientHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
HttpClient.SendAsyncWorker (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)
ASAPService.GetBookingDetails (System.String bookingID)
TrackViewModel.GetBookingStatus (System.String bookingDetails)
TrackActivity.<InitializeLocalVariables>b__46_0 (System.Object e)
AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_1 (System.Object state)
QueueUserWorkItemCallback.WaitCallback_Context (System.Object state)
ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx)
ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx)
IThreadPoolWorkItem.ExecuteWorkItem ()
ThreadPoolWorkQueue.Dispatch ()
_ThreadPoolWaitCallback.PerformWaitCallback ()
Я попытался использовать ModernHttpClient после просмотра некоторых сообщений, но затем я получил '' NativeMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) Java.IO.IOException: время ожидания 'исключение.'
Я изменил реализацию HTTP-клиента на Android и SSL / TLSРеализация «Родного TLS 1.2+» в свойствах проекта.Но ничего не помогло.
Этот код вызывается, когда приложение выходит на передний план.
HttpClient client = new HttpClient();
string Url = String.Format(BASE_ASAP_CUSTOMER_URL + AppConstants.BookingStatus + "AppConstants.BookingParam", bookingID);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AppGlobal.Token);
using (HttpResponseMessage response = await client.GetAsync(Url))
using (HttpContent content = response.Content)
{
string result = await content.ReadAsStringAsync();
var bookingStatus =JsonConvert.DeserializeObject<BookingStatusEntity(result);
return bookingStatus;