簡體   English   中英

任務取消了長時間運行的任務的例外

[英]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);

其中_clientHttpClient實例。

當我嘗試上傳似乎花費太長時間的大文件時,我得到了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以允許可配置的時間? 假設由於超時而取消了任務。 除了嘗試上傳大型文件外,在任何其他情況下它都不會被取消。

試試這個

httpClient.Timeout

獲取或設置請求超時之前要等待的時間跨度。

要設置無限超時,請將屬性值設置為InfiniteTimeSpan。

HttpClient似乎只是在超時並取消任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM