2013-01-23 52 views
2

我试图上传一个简单的.cer文件到SkyDrive。无论我使用的是LiveConnectClient-Method,都没有任何反应。没有编译,运行时或其他异常,我的应用程序永远不会收到LiveOperationResult。我正在使用模拟器,并且能够登录MS Live(因此我的互联网连接正常)。下面是使用的代码的摘录:WP8 +将文件上传到Skydrive

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方法,则没有区别。

回答

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

所有这些限制都可能导致您的异步等待等待。尽管这是一种痛苦,但后台文件传输提供的限制可以带来最佳的用户体验(即关闭应用程序时的上传),最佳电池寿命和最佳蜂窝数据使用率。最终,由您的应用决定是否直接使用WebRequests(uploadAsync)或后台文件传输(BackgroundUploadAsync)。

+0

此API是“智能”的,因此它决定如何处理传输给你。假设你有一个类似Instagram的应用,包含巨大的图片,你可以拍摄1000万张快照,然后分享。即使您将TransferPreferences设置为允许使用电池和蜂窝电话,它也会认为“我不想立即发送,我正在使用蜂窝电话”。我认为他们设计它时没有在笔记本电脑应用程序和电话应用程序之间做出区别。祝Instagram视频好运。 –

相关问题