ユニバーサル 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リクエストは正常ですか?