0

Cookie認証を使用してダウンロードを試みています:

var downloader = new BackgroundDownloader();
downloader.SetRequestHeader("Cookie", "JSESSIONID=" + App.LoginGateway.JSESSIONID);
downloader.SetRequestHeader("Cookie", "JSESSIONID=" + App.LoginGateway.JSESSIONID);

ここまではすべてが完全に機能しますが、ダウンロードを復元しようとすると問題が始まり、JSESSIONID の有効期限が切れています

IReadOnlyList<DownloadOperation> downloads = null;
downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();

リクエストヘッダーを再度設定できる場所を見つけようとしましたが、できませんでした。新しい BackgroundDownloader を作成すると、どこでダウンロード操作に設定できますか?? いくつかのヘルプは非常に高く評価されています

4

1 に答える 1

3

Windows 8.1 の時点では、BackgroundTransfer は、操作が一時停止/再開された場合でも、操作が作成された後に DownloadOperation/UploadOperation に関連付けられたヘッダーの更新をサポートしていません。古いダウンロードを中止し、更新された JSESSIONID ヘッダーで新しいダウンロードを作成する必要があります。

アプリケーションが起動されると、BackgroundDownloader.GetCurrentDownloadsAsync() を使用して、アプリが中断または終了している間にバックグラウンドで発生していた可能性のあるすべての DownloadOperations を照会する必要があります。アプリケーションは、進行状況と完了のハンドラーをアタッチするために、各 DownloadOperation で AttachAsync を呼び出す必要があります。この場合、この特定のエラー ケースを識別し、同じコンテンツの新しいダウンロードを (新しい JSESSIONID で) 作成できるロジックを完了ハンドラーに実装する必要があります。

余談ですが、失敗したダウンロードをこのように後処理する必要がある他の人を探していると、定期的なタイマーで実行するように登録しているバックグラウンド タスクでこれらのチェックを実行している人に出くわす可能性があります。これは良いアイデアのように思えるかもしれませんが (ユーザーが次にアプリケーションをフォアグラウンドに移動するのを待たずにダウンロードを再試行できるため)、バックグラウンド タスクで AttachAsyncを呼び出そうとすると、 BackgroundTransfer がハングする可能性があることに注意してください。フォアグラウンド アプリケーション コードで開始された操作の場合

于 2013-10-29T05:39:23.340 に答える