2

我正在开发通用 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请求正常吗?

4

0 回答 0