前言:本人最近較多使用.net core的項目,最近在使用httpClient發送請求的時候,遇到服務器處理時間較長時,就老是會報異常:TaskCanceledException: A task was canceled。 我的使用異步請求的方法也較為老套,使用的Task a=()=>{}; a.Wait(); 來等待異步操作的結束,這種方式執行等待時,當程序出現錯誤,就會出現上面的異常信息,這時候我們需要檢查異常里的內部異常看看有沒有有用的信息?
常見的內部異常有:A task was canceled
The response ended prematurely.
Unable to read data from the transport connection
Error while copying content to a stream.
.......
等等。。
解決方案:網上有很多類似的問題的解答,我個人遇到的任務取消,是因為訪問國外目標服務器超時導致的錯誤,進而導致了異步任務取消異常。 當然這還是在大神的提醒下猜到的! 在FQ環境下請求國外服務器就正常了,擦啊!! 坑中坑,還以為是.net Core的httpClient有什么問題呢,不明所以。 最后才查清楚。 遇到類似問題的朋友們,自己查下內部異常,多百度吧,如果請求的是國外服務器,可以試試FQ后的效果。