PostAsJsonAsync不返回响应并最终超时

时间:2019-03-14 16:14:30

标签: asp.net-mvc asp.net-web-api async-await timeout dotnet-httpclient

我有一个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。

0 个答案:

没有答案