C# 恢复后台下载时如何设置标头

C# 恢复后台下载时如何设置标头,c#,windows-8,windows-runtime,background-transfer,C#,Windows 8,Windows Runtime,Background Transfer,我正在尝试使用cookie身份验证进行一些下载,具体操作如下: var downloader = new BackgroundDownloader(); downloader.SetRequestHeader("Cookie", "JSESSIONID=" + App.LoginGateway.JSESSIONID); downloader.SetRequestHeader("Cookie", "JSESSIONID=" + App.LoginGateway.JSESSIONID); 在这里一

我正在尝试使用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();
IReadOnlyList下载=null;
downloads=wait BackgroundDownloader.GetCurrentDownloadsAsync();

我试图找到在哪里可以再次设置请求头,但我没有能力。如果我创建了一个新的BackgroundDownloader,我可以在哪里为我的下载操作设置它??非常感谢提供一些帮助

从Windows 8.1开始,BackgroundTransfer不支持在创建操作后更新与DownloadOperation/UploadOperation关联的标题,即使操作已暂停/恢复。您需要中止旧下载,并使用更新的JSSessionID头创建新下载

启动应用程序时,应使用BackgroundDownloader.GetCurrentDownloadsAsync()查询应用程序挂起/终止时可能在后台发生的所有下载操作。然后,应用程序应该在每个下载操作上调用AttachAsync,以便附加进度和完成处理程序。在这种情况下,您应该在完成处理程序中实现逻辑,该逻辑可以识别这个特定的错误案例,并为相同的内容创建一个新的下载(使用新的JSESSIONID)


顺便说一句,如果你去搜索其他需要像这样发布失败下载的人,你可能会遇到一些在后台执行这些检查的人,他们注册在定期计时器上运行这些任务。虽然这听起来是个好主意(因为这意味着您可以在不等待用户下次将应用程序带到前台的情况下重试下载),但请记住,如果您尝试,BackgroundTransfer可能会挂起。

从Windows 8.1开始,BackgroundTransfer不支持在创建操作后更新与DownloadOperation/UploadOperation关联的标头,即使操作已暂停/恢复。您需要中止旧下载,并使用更新的JSSessionID头创建新下载

启动应用程序时,应使用BackgroundDownloader.GetCurrentDownloadsAsync()查询应用程序挂起/终止时可能在后台发生的所有下载操作。然后,应用程序应该在每个下载操作上调用AttachAsync,以便附加进度和完成处理程序。在这种情况下,您应该在完成处理程序中实现逻辑,该逻辑可以识别这个特定的错误案例,并为相同的内容创建一个新的下载(使用新的JSESSIONID)

顺便说一句,如果你去搜索其他需要像这样发布失败下载的人,你可能会遇到一些在后台执行这些检查的人,他们注册在定期计时器上运行这些任务。虽然这听起来是个好主意(因为这意味着您可以在不等待用户下次将应用程序带到前台的情况下重试下载),但请记住,如果您尝试下载,BackgroundTransfer可能会挂起