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";

前述のように、TextBlocknever は「Done」を表示します。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 に答える