我在SkyDrive下载过程中遇到了一些问题,并希望您能帮助我。
遵循标准SkyDrive API&例如,我已经设置了一个浏览SkyDrive文件夹结构的页面,让用户点击一个文件,提示下载,一切正常。
我遇到的问题是当下载的文件很大时,我会在100Mb标记处抛出OutOfMemoryException。
Dennis在http://dotnet.dzone.com/articles/2-things-you-should-consider谈到这个问题,但它与直接的URL下载有关,而不是通过SkyDrive架构。
我尝试从SkyDrive中提取URL并以这种方式直接下载,但没有取得任何成功。
这是我正在使用的代码 - “item”对象是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);
当文件不是太大时,这将正常工作,但如上所述,选择一个大文件(&gt; 100Mb),它会因OutOfMemory异常而死亡。
任何指针?
提前致谢
答案 0 :(得分:2)
已解决 - 虽然我从未能够使用downloadClient.DownloadAsync()方法下载大文件,但使用downloadClient.getAsync()并通过常规Stream下载程序使用预认证URL可以解决问题。