ASP MVC如何处理TaskCancelledException,为PostAsJsonAsync扩展超时

时间:2016-06-23 15:36:32

标签: asp.net asp.net-mvc task

我目前正在开展一个项目,我必须向另一个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
    }

我有什么办法可以增加超时时间吗?或者这个帖子请求还有其他问题吗?

1 个答案:

答案 0 :(得分:1)

NoAsyncTimeoutAsyncTimeout为此操作提供服务的请求设置超时。对requestUri的POST可能是超时的。尝试设置HttpClient.Timeout