通常我的代码效果很好,但是大约15%的尝试,我收到以下错误:
System.Net.WebException:
The remote server returned an error: (504) Gateway Timeout.
at System.Net.WebClient.UploadDataInternal(…
我的c#代码执行以下操作:
该过程总共需要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何时可以进行更多操作?
还是有另一种解决方案吗?