【问题标题】:Upload api fails and throws below exception when file is more than 3MB当文件超过 3MB 时,上传 api 失败并抛出异常
【发布时间】:2014-05-29 17:33:44
【问题描述】:

我遇到了 box-sdk (https://github.com/box/box-windows-sdk-v2) 上传 API 的问题。 问题 : 尝试上传大文件(大于 3MB)时(小于 3MB 的文件效果很好。) 上传 api 失败并抛出异常。

错误:

ToString : System.AggregateException:发生一个或多个错误。 ---> System.Threading.Tasks.TaskCanceledException:任务被取消。 --- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 在 XXXX.Program.d__34.MoveNext() 在 d:\Gaurav\TFS\XXXX\XXXX\Program.cs:line 319 --->(内部异常#0)System.Threading.Tasks.TaskCanceledException:任务被取消。

堆栈跟踪:
在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 在 XXXX.Program.d__34.MoveNext() 在 d:\Gaurav\TFS\XXXX\XXXX\Program.cs:line 319

内部异常: System.Threading.Tasks.TaskCanceledException:任务被取消。时间 : 2014-05-28 04:55:59 PM

产生错误的代码:

using (Task<BoxFile> uploadTask = boxClient.FilesManager.UploadAsync(boxFileRequest, spStream))
{
    BoxFile newFile = uploadTask.Result;
}

【问题讨论】:

  • 我有一个用户报告了同样的问题,但我无法重现它。我让他们安装 Fiddler 并对失败进行 HTTP 跟踪。当他们开始记录 HTTP 流量时,问题突然消失了!
  • 要检查的另一件事是帐户允许的最大文件大小或剩余配额。
  • 感谢 John 和 Peter,1. 文件大小:我有 ent 帐户,所以最大文件大小为 2gb 2. Fiddler 和看起来像 httpClient 超时问题,也从 box.com 团队确认,他们正在工作关于问题。

标签: box-api box


【解决方案1】:

尝试在 UploadAsync 方法中使用 timeout 参数:

boxFile = Client.FilesManager.UploadAsync(req, fs, null, new TimeSpan(1, 0, 0)).Result;

【讨论】:

  • 我遇到了同样的问题——小文件(~1 MB)上传正常;大文件(> 10 MB)得到任务取消异常。所有建议的修复都表明您确实需要“分块”您的文件并分段上传。您的建议要容易得多,而且(到目前为止)效果很好!谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多