我正在开发通用 Windows 应用程序并使用 Live SDK 5.6 将文件上传到 OneDrive。我在这里看到使用示例和关于版本的说明。根据说明我应该使用:
对于 Windows 和 WP81:CreateBackgroundUploadAsync
方法;
对于 WP8 Silverlight:BackgroundUploadAsync
方法
CreateBackgroundUploadAsync
在 Windows 上像一个魅力一样工作并返回正确的进度值,LiveOperationProgress
但在 WP81 上它一直显示 0% 的进度,最后它变成了 100%。所以它实际上并没有跟踪进度。
然后我尝试使用BackgroundUploadAsync
(它适用于 Silverlight 应用程序),它可以在手机上运行 - 上传文件并正确跟踪进度。但是当我尝试上传大文件(在我的情况下> 150Mb)时,我注意到上传操作恰好在 120 秒后重置为 0% 并重新开始,没有任何异常。
这是 Windows 和 WP81 方法的代码:
var progressHandler = new Progress<LiveOperationProgress>(
(progress) =>
{
var res = progress.ProgressPercentage;
});
LiveUploadOperation uploadOperation = await liveConnectClient.CreateBackgroundUploadAsync(uploadPath, "testfile.wav", file, OverwriteOption.Rename);
LiveOperationResult uploadResult = await uploadOperation.StartAsync(new CancellationToken(), progressHandler);
对于 Silverlight:
var progressHandler = new Progress<LiveOperationProgress>(
(progress) =>
{
var res = progress.ProgressPercentage;
});
LiveOperationResult opResult = await connectClient.BackgroundUploadAsync(CurrentFolderId,
file.Name,
stream,
OverwriteOption.Rename,
record.GetCTS().Token,
progressHandler);
所以问题 - 如何让它上传任何大小的文件,重新定义超时(当前为 120 秒)并跟踪 Windows 和 WP81 上的进度?
UPD:我在这里 找到了 2 分钟超时的原因:
After the connection has been established, an HTTP request message that has not received a response within two minutes is aborted.
PUT请求正常吗?