2017-06-02 58 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

謝謝Rebot先生。我擔心情況會如此。我的批處理是每批執行2-3次許可更新,正如您所看到的,一旦我準備好批處理,就會執行批處理。我在文件夾級別上完成了類似的批量更新,而且我沒有看到文件上傳時出現此錯誤。那裏的方法基本相同。 –