2

Web サービスに対するサービス参照を含む C# プロジェクトがあります。

次のコードがあります。最初に、サービス リクエストでメソッドをトリガーします。

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     App.service.getFileCompleted += service_getFileCompleted;
     App.service.getFileAsync(App.user, App.document);
 }

そしてservice_getFileCompletedは を取得しbyte[]、それをファイルに入れ、デフォルトのアプリケーションでそのファイルを開くことになっています:

 async void service_getFileCompleted(object sender, BackendReference.getFileCompletedEventArgs e)
 {
            string tmp = "temp." + e.Result.type;

            StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
            StorageFile localFile = await local.CreateFileAsync(tmp, CreationCollisionOption.ReplaceExisting);

            using (Stream writeStream = await localFile.OpenStreamForWriteAsync())
            {
                writeStream.Seek(0, SeekOrigin.End);
                await writeStream.WriteAsync(e.Result.fileData, 0, e.Result.fileData.Length);
            }

            await Windows.System.Launcher.LaunchFileAsync(localFile);

        }
 }

アプリが初めて起動し、ボタンがトリガーされたとき、それは魅力のように機能します。ただし、ボタンを 2 回目に押すと、行

Stream writeStream = await localFile.OpenStreamForWriteAsync()

をキャストしSystem.UnauthorizedAccessExceptionます。

より正確には:

System.UnauthorizedAccessException: アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク)
で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (タスク タスク)
で System.IO.WindowsRuntimeStorageExtensions.d__5.MoveNext()

--- 例外がスローされた前の場所からのスタック トレースの終わり ---

System.IO.WindowsRuntimeStorageExtensions.d__5.MoveNext() で

--- 例外がスローされた前の場所からのスタック トレースの終わり ---

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク)
で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (タスク タスク)
で System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
で archive.DocumentDetail.d__0.MoveNext ()} System.Exception {System.UnauthorizedAccessException}

これはなぜですか?

ありがとう

4

0 に答える 0