Как исправить ошибку "FileOpenBaseDocumentCheckOperationFailed" 500 при попытке создать сеанс (Drive Excel Workbook))

Я работаю над проверкой концепции, используя MS Graph. Когда я пытаюсь создать сеанс для моей книги Excel с Microsoft Graph REST API (v1.0), я получаю

ошибка 500 FileOpenBaseDocumentCheckOperationFailed

{
  "error": {
    "code": "FileOpenBaseDocumentCheckOperationFailed",
    "message": "Service is unavailable. Please try again.",
    "innerError": {
      "request-id": "6419d49f-60b6-4273-8be3-78f422d02a76",
      "date": "2019-08-28T14:40:00"
    }
  }
}

Он работает через некоторое время после нескольких попыток, поэтому я хотел бы знать, является ли это проблемой со статусом сервера Microsoft Graph REST API или что-то не так с моим исходным кодом? Я следую документации MS и использую предоставленный шаблон.

Когда я использую веб-сайт Microsoft Graph Explorer, я всегда получаю status = 201 (создано), и я получил workbook-session-id,

Я нахожусь в APAC, поэтому по отклику заголовка консоли я вижу, что я использую центр обработки данных в Восточной Азии. Может быть, веб-сайт Graph Explorer использует другой специальный центр обработки данных, отличный от Восточной Азии, чтобы он был более стабильным?

x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"East Asia","Slice":"SliceC","Ring":"4","ScaleUnit":"000","RoleInstance":"AGSFE_IN_1","ADSiteName":"EAS"}}

Вот мой исходный код:

Таким образом, чтобы "заставить" получить workbook-session-idЯ называю callMSGraph функционировать снова, если status = 500 или же 409,

httpMethod="POST"
theUrl="https://graph.microsoft.com/v1.0/sites/{sharepoint_id}/drive/items/{item_id}/workbook/createSession"

function callMSGraph(httpMethod, theUrl, accessToken, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
        if (this.readyState == 4) {
            if (this.status == 200 || this.status == 201) {
                callback(JSON.parse(this.responseText), httpMethod);
            } else {
                if (this.status == 500 || this.status == 409) {
                    callMSGraph(httpMethod, theUrl, accessToken, callback);
                    return false;
                }
                console.log("[" + this.status + "] Error: " + JSON.parse(this.responseText));
            }
        }
    }
    xmlHttp.open(httpMethod, theUrl, true); // true for asynchronous
    xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    xmlHttp.setRequestHeader("Content-Type", "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8");
    xmlHttp.setRequestHeader("persistChanges", "true");

    if (httpMethod === "POST") {
        xmlHttp.send();
        return false;
    }
}

Я ожидаю получить workbook-session-id с первой или второй попытки, но иногда я получал 10 или более попыток, прежде чем получить status 201 (Создано). Иногда я получал больше попыток, а потом не получалось, потому что пытался слишком много раз.

Ссылка на Graph Explorer https://developer.microsoft.com/en-us/graph/graph-explorer

Любая идея будет оценена, так как я хочу сделать запрос на создание сеанса надежным. Я не нахожу никакой информации об этом сообщении об ошибке:

FileOpenBaseDocumentCheckOperationFailed

В противном случае я не получаю никаких проблем для других команд с GET или же PATCH,

0 ответов

Другие вопросы по тегам