Excel Graph API:定期504网关超时错误

时间:2017-09-07 19:55:55

标签: microsoft-graph

通常我的代码效果很好,但是大约15%的尝试,我收到以下错误:

System.Net.WebException: 
  The remote server returned an error: (504) Gateway Timeout. 
  at System.Net.WebClient.UploadDataInternal(…

我的c#代码执行以下操作:

  • 获取图形API Excel访问令牌和会话(这始终是 成功的)
  • 设置2-8范围内的值(取决于具体内容) 需要数据/计算)
  • 从多个获取计算值 范围
  • 获取多个更新的图表

该过程总共需要4-12秒才能获得所有需要的结果。 但有时其中一个“设置值”操作会返回504网关超时错误。

以下是我用来设置值(更新范围)的代码。它循环几次以更新多个范围。

string rangeValues = "{\"values\" :[" + rowValues + "]}";
using(WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/json";
    wc.Headers[HttpRequestHeader.Authorization] = "Bearer " + Access_Token;
    wc.Headers["workbook-session-id"] = WorkBook_SessionId;
    URI = "https://graph.microsoft.com/v1.0/me/drive/root:/EwaReportWorkbooks/" +
        ToolPathAndName +
        ":/workbook/worksheets('" + sheetName +
        "')/range(address='" + rangeName + "')";
    Data = rangeValues;
    wc.Headers[HttpRequestHeader.ContentType] = "application/json";
    wc.UploadString(URI, "PATCH", Data);
}

我看到其他几个人也有类似的问题:

一个回复表明这可能是一个已知问题。但是这些解决方案似乎并不适用于我的情况(用户无需等待的UI)。

我理解延长WebClient超时无效(这是远程服务器问题)。

是否会出现此问题,因为我正在设置,然后获取,范围太快(一个接一个)?如果是这样,我的代码应该在它们之间暂停多少?或者有什么方法可以感知API何时可以进行更多操作?

还是有另一种解决方案吗?

0 个答案:

没有答案