2017-06-02 15 views
0

ファイルに対するファイルパーミッションの変更を一括して実行すると、次のエラーが出力されます。私はそれがファイルの一部のための唯一の問題はだから、これを作るのかわからないんだけど、およびデバッグモードで実行しようとすると問題がトリガされません:ファイルパーミッションをバッチで設定する

500 >> Internal Error. User message: "An internal error has occurred which prevented the sharing of these item(s): Example File.DOCX" 

私が使用している次のことをコード:

var batch = new Google.Apis.Requests.BatchRequest(service); 

Google.Apis.Requests.BatchRequest.OnResponse<Permission> callback = delegate (
      Permission permission, 
      Google.Apis.Requests.RequestError error, 
      int index, 
      System.Net.Http.HttpResponseMessage message) { 
       if (error != null) { 
        // Handle error 
        Console.WriteLine("File PERMISSION Error: " + error.Code + " >> " + error.Message); 
       } else { 
        Console.WriteLine("File Permission ID: " + permission.Id); 
       } 
      }; 

Permission filePermission = new Permission() 
{ 
    EmailAddress = "[email protected]" 
    , Type = GoogleDriveRoleType 
    , Role = GoogleDriveRole 
}; 

var permExec = service.Permissions.Create(filePermission, googleDriveObjectId); 
permExec.SendNotificationEmail = false; 
permExec.Fields = "id"; 
batch.Queue(permExec, callback); 

await batch.ExecuteAsync(); 

このコードは、public static async Task MyMethod(...)のメソッド内にあります。

答えて

1

バッチリクエストを小さくすることができます。毎秒要求が多すぎるためにサーバーに氾濫しているため、500の内部エラーが発生している可能性があります。このrelated SO postに記載されているように、サーバーはバッチ要求を処理するため、エラー500を回避するためには速度を落とすほどスマートではありません。また、指数バックオフを使用してからバッチ要求を再試行することもできます。このforumに記載されているように、現在、バッチリクエストでどの部分が失敗したか、成功したかを知る方法がありません。これに関する独自の実装を作成する必要があります。お役に立てれば。

+0

ありがとうMr Rebot。私はこれが事実であろうと恐れていた。私のバッチ処理は、バッチごとに2〜3回のアクセス権の更新が行われ、表示されているように、バッチ処理が完了すると実行されます。私はフォルダレベルで同様のバッチ更新を行ったし、私はファイルアップロードで見ているように私はこのエラーが発生しませんでした。この方法は基本的に同じです。 –

関連する問題