HttpClient.SendAsyn c создает исключение ObjectDisposedException для Xamarin.Forms Android, но не для UWP - PullRequest
0 голосов
/ 27 января 2020

Я пишу приложение Xamarin.Forms и пытаюсь сделать сообщение на свой веб-сервер с некоторой JSON полезной нагрузкой.

Это прекрасно работает в UWP, но на Android я получаю следующая ошибка:

 System.ObjectDisposedException: Can not access a closed Stream.
  at System.IO.StreamHelpers.ValidateCopyToArgs (System.IO.Stream source, System.IO.Stream destination, System.Int32 bufferSize) [0x0003a] in <19853c43ab794d18ab1a33ecb65b3c4d>:0 
  at System.IO.MemoryStream.CopyToAsync (System.IO.Stream destination, System.Int32 bufferSize, System.Threading.CancellationToken cancellationToken) [0x00000] in <19853c43ab794d18ab1a33ecb65b3c4d>:0 
  at Xamarin.Android.Net.AndroidClientHandler.WriteRequestContentToOutput (System.Net.Http.HttpRequestMessage request, Java.Net.HttpURLConnection httpConnection, System.Threading.CancellationToken cancellationToken) [0x0009a] in <2bd1b8f6e97f44bbb32ce356b78d4ce6>:0 
  at Xamarin.Android.Net.AndroidClientHandler.DoProcessRequest (System.Net.Http.HttpRequestMessage request, Java.Net.URL javaUrl, Java.Net.HttpURLConnection httpConnection, System.Threading.CancellationToken cancellationToken, Xamarin.Android.Net.AndroidClientHandler+RequestRedirectionState redirectState) [0x002f4] in <2bd1b8f6e97f44bbb32ce356b78d4ce6>:0 
  at Xamarin.Android.Net.AndroidClientHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x002cf] in <2bd1b8f6e97f44bbb32ce356b78d4ce6>: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 <c85119bf7e3e421490ae6b5487992fff>:0 
  at BB.App.Services.WebserviceHelper.PostToWebservice[T] (System.String url, System.String json) [0x0008d] in C:\_Sources\_BB\BB.App\BB.App\Services\WebserviceHelper.cs:74 

Это происходит, когда выполняется следующий код:

await httpClient.SendAsync(httpRequest);

Я нашел этот сайт , где он рекомендует не помещать создание HttpClient в операторе использования, я изменил это, но это не решило мою проблему.

Я также нашел эту ошибку , которая должна быть исправлена ​​в прошлом году. Если честно, это звучит как наиболее вероятный кандидат, но я не знаю точно, что нужно обновить, чтобы получить это исправление на моем p c. Я уже обновил все свои ссылки на xamarin. android .x в своем решении, но пока не повезло.

1 Ответ

0 голосов
/ 30 января 2020

Итак, в заключение, моя проблема заключалась в том, что

  • переходил к свойствам проекта android,
  • , выбирая вкладку 'android options',
  • щелкнув «расширенный»
  • , установив «реализацию httpclient» с «Android» на «Управляемый»
...