2

我正在尝试将一个简单的 .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从不显示“完成”。如果使用UploadAsyncorBackgroundUploadAsync方法没有区别。

4

1 回答 1

3

BackgroundUploadAsync 使用Windows Phone 后台文件传输,这是一个智能文件上传和下载调度系统。而 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)。

于 2013-01-24T00:00:23.033 回答