我有一个MVC网站,该网站使用HttpClient
进行API调用。我将超时配置为2分钟,API调用通常在90秒内返回。从应用程序日志中可以看到该API已完成其执行。如果我还使用Postman或SOAPUI之类的工具调用API方法,则90秒后会收到JSON响应。
我无法使我的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)
。
有什么明显的地方我做错了吗?我看了很多问题,它们似乎都没有正确使用。结果,而不是像我这样使用await。