Загрузка Excel из Google API случайная ошибка - код статуса ответа не указывает на успех - PullRequest
1 голос
/ 20 июня 2019

Попытка загрузить файлы Excel (* .xlsx) с Google Диска.

При вызове DriveService.HttpClient.GetByteArrayAsync () я получаю эту ошибку:

System.Net.Http.HttpRequestException Код состояния ответа не указывает на успех: 500 (Внутренняя ошибка сервера

  • Эта ошибка происходит случайно
  • Размер файла Excel варьируется от 0,5 МБ до 15 МБ
  • Похоже, что один файл чаще вызывает ошибку. Это 4 МБ
  • Это происходило случайно каждый месяц или около того. Начиная с этой недели, это происходит почти каждый раз, когда я запускаю код, который загружает 18 файлов Excel.

Я создал механизм перехвата / повтора, который, кажется, работает с 3 попытками. Я все еще хотел бы исправить

byte[] byteArray = Encoding.UTF8.GetBytes(map.Credentials);
string[] scopes = new string[] { DriveService.Scope.Drive, DriveService.Scope.DriveFile };
UserCredential credential;
using (var stream = new MemoryStream(byteArray))
{
    string credPath = "token.json";
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        scopes,
        "user",
        CancellationToken.None,
        new FileDataStore(credPath, true)).Result;
}
DriveService driveService = new DriveService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = ApplicationName,
});

string path = "https://www.googleapis.com/drive/v3/files/" + map.Path + "?alt=media";
var x = driveService.HttpClient.GetByteArrayAsync(path);
byte[] arrBytes = x.Result;  // Randomly throws exception
...