Почему происходит это исключение?(TaskCanceledException) - PullRequest
0 голосов
/ 02 декабря 2018

У меня проблема с классом .NET HttpClient.Иногда фрагмент кода ниже выдает TaskCanceledException, и я не могу отладить это, потому что это случайно (мне не повезло, что Apple отклонила мое приложение Xamarin для этого).Может кто-нибудь объяснить мне причину этого исключения?

 public static HttpResultModel RecoveryPassword(string email)
    {
        HttpClient httpClient = new HttpClient();

        try
        {
            var url = String.Format(Constants.SERVER_ADDRESS + "/user/forgotPassword/{0}/", email);

            var request = new HttpRequestMessage(new HttpMethod("POST"), url)
            {
                Content = new StringContent(email, Encoding.UTF8, "application/json"),
            };

            //to be more specific, this line throws the exception
            var result = httpClient.SendAsync(request).Result;

            string message = result.Content.ReadAsStringAsync().Result;

            if (result.IsSuccessStatusCode)
            {
                var response = JsonConvert.DeserializeObject<HttpResultModel>(message);
                response.OperationSuccess = true;
                return response;
            }
            else
            {
                var response = JsonConvert.DeserializeObject<HttpResultModel>(message);
                response.OperationSuccess = false;
                return response;
            }
        }

        catch (Exception ex)
        {
            throw ex;
        }
    }
}

1 Ответ

0 голосов
/ 02 декабря 2018

Это происходит по одной из двух причин:

  1. Отключение сервера
  2. тайм-аут от клиента Http.Значение по умолчанию для HttpClient составляет 100 секунд.Вы можете установить его на бесконечный промежуток времени.

    httpClient.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

    каждый запрос может быть затем установлен на определенное время ожидания, если необходимо, так как время ожидания HttpClient находится на более высоком уровне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...