MS Graph Api:将 docx 转换为 pdf 时超时

Mar*_*ius 7 c# timeout microsoft-graph-api

我得到一个Microsoft.Graph.ServiceExceptionCode: timeout Message: The request timed out.Microsoft.Graph.Core以下堆栈跟踪:

   at Microsoft.Graph.HttpProvider.SendRequestAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Microsoft.Graph.BaseRequest.SendRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Microsoft.Graph.BaseRequest.SendStreamRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at MyCode.cs
Run Code Online (Sandbox Code Playgroud)

服务器返回以下标头:

"X-CorrelationId": "605c9349-69e2-4569-acb5-ff9fec9aa887.5e6c48a9-6492-497a-857f-a373bff98f37"
"X-OneDriveMeTA-Version": "1.0.7615.29479"
"X-ErrorCode": "General_Timeout"
"X-ErrorType": "Unexpected"
"X-ErrorSource": "Service"
"X-AspNet-Version": "4.0.30319"
"X-MSEdge-Ref": "Ref A: 71954E8D2D9F46ACAE2CA0953006DE5D Ref B: VIEEDGE1811 Ref C: 2020-11-30T08:56:32Z"
Run Code Online (Sandbox Code Playgroud)

服务器响应:

"Date": "Mon, 30 Nov 2020 08:57:24 GMT"
"StatusCode": "InternalServerError"
"RawResponseBody": "{\"error\":{\r\n  \"code\": \"generalException\",\r\n  \"message\": \"The operation has timed out.\",\r\n  \"innererror\": {\r\n    \"code\": \"General_Timeout\"\r\n  }\r\n}}"
Run Code Online (Sandbox Code Playgroud)

C#代码:

var queryOptions = new List<QueryOption> { new QueryOption('format', 'pdf') };
var pdf = await graphClient.Drives[folderId]
                           .Items[docxId]
                           .Content
                           .Request(queryOptions)
                           .GetAsync();
Run Code Online (Sandbox Code Playgroud)

通常此代码有效,但每隔一天它就会超时。如果它只超时一次也可以,但有些用户会连续经历多次超时,因此即使重试也无济于事。

有没有办法获得有关此问题的更多信息?我可以在某处访问日志/更详细的错误消息吗?

use*_*506 2

  1. 如果数据量很大,导致超时异常,就需要在Paging中使用。查看更多信息: https: //learn.microsoft.com/en-us/graph/paging2

  2. 您可以通过设置来增加超时:

    graphClient.HttpProvider.OverallTimeout = TimeSpan.FromHours(1);

上述两个选项都可以解决您的问题,但即使它们不能解决您的问题,它们也是可能出现的极端情况的安全代码。