1

我在 SkyDrive 下载过程中遇到了一些问题,希望您能帮助我。

按照标准的 SkyDrive API 和示例,我设置了一个浏览 SkyDrive 文件夹结构的页面,让用户单击文件,提示下载,一切正常。

我遇到问题的地方是当下载的文件很大时,我会在 100Mb 标记附近抛出 OutOfMemoryException。

丹尼斯在这里谈到了这个问题http://dotnet.dzone.com/articles/2-things-you-should-consider但它与直接 URL 下载有关,而不是通过 SkyDrive 架构。

我尝试从 SkyDrive 中提取 URL 并以这种方式直接下载,但没有任何成功。

这是我正在使用的代码 - “项目”对象是 SkyDriveItem 类型,已遍历文件夹内容并选择了此文件。

LiveConnectClient downloadClient = new LiveConnectClient(App.Session);
                    try
                    {
                        downloadClient.DownloadCompleted += new EventHandler<LiveDownloadCompletedEventArgs>(downloadClient_DownloadCompleted);
                        downloadClient.DownloadProgressChanged += new EventHandler<LiveDownloadProgressChangedEventArgs>(downloadClient_DownloadProgressChanged);
                        downloadClient.DownloadAsync(item.ID + "/content", item);

当文件不是太大时,这将正常工作,但如前所述,选择一个大文件 (>100Mb) 并因 OutOfMemory 异常而死。

任何指针?

提前致谢

4

1 回答 1

2

已解决 - 虽然我无法使用 downloadClient.DownloadAsync() 方法下载大文件,但使用 downloadClient.getAsync() 并通过常规 Stream 下载器使用 Pre-Authenticated URL 可以解决问题。

于 2012-06-26T00:14:10.423 回答