我在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
以在取消任务之前允许可配置的时间;假设任务因超时而被取消。除了我尝试上传大文件时,它永远不会被取消。
答案 0 :(得分:0)
试一试
获取或设置在请求超时之前等待的时间跨度。
要设置无限超时,请将属性值设置为 InfiniteTimeSpan。
HttpClient似乎正在超时并取消任务