2016-06-23 97 views
0

我目前正在開發一個項目,我必須向另一個API發送一個post請求,這需要花費大量的時間(〜30-60秒)返回。當我從我的控制器發出發佈請求時,通常(90%的時間)在請求超時時發生TaskCancelledException。我嘗試過使用NoAsyncTimeout和AsyncTimeout來處理大量數據,但似乎沒有工作。 PostAsJsonAsync代碼行發生異常。代碼如下:ASP MVC如何處理TaskCancelledException,延長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

NoAsyncTimeoutAsyncTimeout設置此操作提供服務的請求的超時時間。可能是requestUri的POST是超時的。嘗試設置HttpClient.Timeout

+0

謝謝,就是這樣! – jeffjc97