[英]Task canceled exception for long running task
我在WPF客戶端中有用於Web API的方法:
public async Task PostFileAsync(string localPath, string serverPath)
該方法的關鍵是調用:
var resp = await _client.PostAsync(uri, content);
其中_client
是HttpClient
實例。
當我嘗試上傳似乎花費太長時間的大文件時,我得到了A task was canceled.
異常,具有以下堆棧跟蹤:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at QuickDrive.Wpf.Api.ApiClient.<PostFileAsync>d__10.MoveNext() in C:\Projects\QuickDrive\Code\QuickDrive.Wpf\Api\ApiClient.cs:line 176
我在這里沒有提到任何超時,但是對於少於大約10分鍾的帖子(我尚未准確計時),此任務可以很好地完成,例如,對於小於+ -500MB的文件,在我的連接上。
這個異常是否真的是由於超時引起的,如果是這樣,那么在取消任務之前,如何配置await
以允許可配置的時間? 假設由於超時而取消了任務。 除了嘗試上傳大型文件外,在任何其他情況下它都不會被取消。
試試這個
獲取或設置請求超時之前要等待的時間跨度。
要設置無限超時,請將屬性值設置為InfiniteTimeSpan。
HttpClient似乎只是在超時並取消任務
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.