PostAsJsonAsync не возвращает ответ и в конечном итоге время ожидания истекло - PullRequest
1 голос
/ 14 марта 2019

У меня есть веб-сайт MVC, который выполняет вызов API, используя HttpClient. Я настроил тайм-аут на 2 минуты, и вызов API обычно возвращается в течение 90 секунд. Из журнала приложений видно, что API завершает свое выполнение. Если я также вызываю метод API с помощью такого инструмента, как Postman или SOAPUI, я получаю ответ JSON через 90 секунд.

Я не могу заставить свое приложение MVC вернуть ответ, и вместо этого через 2 минуты оно выдаст исключение OperationCanceledException, которое я улавливаю.

public async Task<CommonApiResult> PostAsync<T>(string url, TimeSpan timeout, T payload)
{
    using (var client = new HttpClient())
    {
        client.Timeout = timeout;
        var response = await client.PostAsJsonAsync(url, payload);
        if (response.IsSuccessStatusCode)
        {
            var stringContent = await response.Content.ReadAsString(url).ConfigureAwait(false);
            return new CommonApiResult<T>
            {
                StatusCode = response.StatusCode,
                Data = stringContent.Deserialize<T>(url)
            };
        }
     }
     return null;
}

Я никогда не получу код if (response.IsSuccessStatusCode).

Есть ли что-то очевидное, что я делаю не так? Я посмотрел на множество вопросов, и все они, кажется, неправильно используют. Результат и не использовать, жду, как я.

...