исключение сервера, OperationCanceledException, возникает в Microsoft.Owin.IOwinContextExtensions.GetDependencyResolver

#c# #xamarin #asp.net-web-api2

#c# #xamarin #asp.net-web-api2

Вопрос:

У меня есть api, который я могу вызвать с помощью этой cURL команды:

  C:WindowsSystem32curl.exe -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Bearer X.Y.Z -d '{
 >>    "Filter": {
 >>      "ShowRent": true,
 >>      "ShowSale": true,
 >>      "ShowApartment": true,
 >>      "ShowOffice": true,
 >>    },
 >>    "PageSize": 1,
 >>    "PageNumber": 1
 >>  }'  http://localhost:port_number/path_to_api
  

этот запрос успешно завершен.
Предполагается, что api возвращает a List<ResultDto> .
Я хочу создать тот же запрос в проекте Xamarin.
Вот что я пробовал:

 var a = new
    {
        PageSize = 5,
        PageNumber = 1,
        Filter = new
        {
            ShowRent = true,
            ShowSale = true,
            ShowApartment = true,
            ShowOffice = true
         }
    };
    var json = JsonConvert.SerializeObject(a);
    var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
    var client = new HttpClient();
    client.DefaultRequestHeaders.Authorization =
        new AuthenticationHeaderValue(
            "Bearer",
            my_access_token);
    var rawResponse = await client.PostAsync(
        "http://localhost:port_number/path_to_api",
        stringContent
        );

    List<RealtorEstateMarkerDto> result=
        JsonConvert.DeserializeObject<List<ResultDto>>(
            await rawResponse.Content.ReadAsStringAsync());
  

когда выполняется мой код xamarin, System.OperationCanceledException на сервере возникает исключение.

Вот трассировка стека исключения:

 at System.Threading.CancellationToken.ThrowOperationCanceledException()
at System.Threading.CancellationToken.ThrowIfCancellationRequested()
at Microsoft.Owin.IOwinContextExtensions.GetDependencyResolver(IOwinContext context)
  

Комментарии:

1. Небольшое отличие, которое я вижу, заключается в том, что в Xamarin вы не устанавливаете заголовок Accept

2. Вам нужно просмотреть все исключение / трассировку стека, поскольку, скорее всего, основная причина будет внутри внутреннего исключения, которое вы не показали.

3. вам также необходимо убедиться, что ваш сервер доступен с устройства / эмулятора. адреса «localhost» являются проблематичными, и обычно вместо этого следует использовать IP-адрес сервера или полное доменное имя