我目前正在开展一个项目,我必须向另一个API发出请求,这需要花费大量时间(约30-60秒)才能返回。当我从我的控制器发出post请求时,我通常(90%的时间)在请求超时时获得TaskCancelledException。我尝试过使用NoAsyncTimeout和AsyncTimeout,但是它似乎并没有起作用。异常发生在PostAsJsonAsync代码行中。代码如下:
[HttpPost]
[ValidateAntiForgeryToken]
[NoAsyncTimeout]
public async Task<ActionResult> Create(...)
{
// processing code
HttpClient httpClient = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
HttpResponseMessage response = await httpClient.PostAsJsonAsync(requestUri, data);
var jsonResult = JObject.Parse(await response.Content.ReadAsStringAsync());
// processing result
}
我有什么办法可以增加超时时间吗?或者这个帖子请求还有其他问题吗?
答案 0 :(得分:1)
NoAsyncTimeout
和AsyncTimeout
为此操作提供服务的请求设置超时。对requestUri
的POST可能是超时的。尝试设置HttpClient.Timeout
。