3

我使用 MS Graph 进行概念验证。当我尝试使用 Microsoft Graph REST API (v1.0) 为我的 Excel 工作簿创建会话时,我得到了一个

错误 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.

我在亚太地区,所以我可以从控制台标题响应中看到我正在使用东亚的数据中心。也许 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 = 500409

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否则,对于其他带有or的命令,我不会遇到任何问题PATCH

4

0 回答 0