WP8 +上传文件到Skydrive

时间:2013-01-23 15:11:55

标签: windows-phone-8 onedrive windows-live

我正在尝试将简单的.cer文件上传到SkyDrive。无论我使用LiveConnectClient-Method,都没有任何反应。没有编译,运行时或其他异常,我的应用程序永远不会收到LiveOperationResult。我正在使用模拟器,我可以登录到MS Live(所以我的网络连接很好)。以下是所用代码的摘录:

using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
  using(var fileStream = store.OpenFile(certPath, FileMode.Open, FileAccess.Read, FileShare.Read))
  {
    try
    {
      client = new LiveConnectClient(session);
      //LiveOperationResult operationResult = await client.UploadAsync("me/skydrive", certPath, fileStream, OverwriteOption.Overwrite, new System.Threading.CancellationToken(false), null);
      LiveOperationResult res= await client.BackgroundUploadAsync("me/skydrive",
                                                                  new Uri("/shared/transfers/cert.cer", UriKind.Relative),
                                                                  OverwriteOption.Overwrite);
      linkTextBlock.Text = "Done";

如前所述,TextBlock从不显示“完成”。如果使用UploadAsyncBackgroundUploadAsync方法,则没有区别。

1 个答案:

答案 0 :(得分:3)

BackgroundUploadAsync使用Windows Phone background file transfers,这是一个智能文件上传&下载调度系统。而UploadAsync使用即时HTTP文件上传和下载。

使用后台文件传输即表示您同意上传时的以下限制:

  

最大上传文件大小

     

过度蜂窝连接 - 5 MB

     

通过电池供电的Wi-Fi连接 - 20 MB

     

通过外部电源进行Wi-Fi连接 - 100 MB

上传队列的最大数量也有限制。下载和其他限制。阅读完整文档@ http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202955(v=vs.105).aspx

所有这些限制可能导致您的 async await 等待。即使这很痛苦,背景文件传输所规定的限制也会带来最佳的用户体验(即应用程序关闭时的上传),最佳的电池寿命和最佳的蜂窝数据使用情况。最终由您的应用决定是否要使用直接WebRequests(uploadAsync)或后台文件传输(BackgroundUploadAsync)。