У меня есть веб-сайт 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)
.
Есть ли что-то очевидное, что я делаю не так? Я посмотрел на множество вопросов, и все они, кажется, неправильно используют. Результат и не использовать, жду, как я.