簡體   English   中英

Microsoft Graph API - 獲取 Sharepoint 文檔庫中的項目列表時超時 (C# ASP DotNet)

[英]Microsoft Graph API - Timeout while getting list of items in Sharepoint Document Library (C# ASP DotNet)

我正在使用 Microsoft Graph API 獲取 Sharepoint 文檔庫中的文檔列表。 代碼可以使用 6 個月。 上周五我的密碼壞了。

庫中大約有 700 個文檔,過去請求會在 5-6 秒后完成。 截至上周五(2022 年 9 月 23 日),它開始超時(約 120 秒)。 如果我將它限制為 200 行,它會在 12 秒后工作,但我需要所有 700 行,如果有一種方法可以進行分頁。 然后我可以制定自己的方法。 另外,如果我可以增加超時時間,它可能會起作用——我嘗試將 GraphClient.HttpProvider.OverallTimeout 和請求 WithMaxRetry 修改為 900 秒。 但它仍然在大約 122 秒后超時。

這是我的代碼的相關部分(rowLimit 是一個設置為 5000 的整數):

List<QueryOption> queryOptions = new List<QueryOption>()
            {
                new QueryOption("Top", $"{rowLimit}"),
                new QueryOption ("Prefer","allowthrottleablequeries")
            };

IDriveItemChildrenCollectionPage result = await GraphClient.Sites[siteID].Drives[documentLibraryID].Root.Children
                    .Request(queryOptions)
                    .Expand("listItem")
                    .WithMaxRetry(1) //set 1 max retry and set timeout
                    .WithMaxRetry(TimeSpan.FromSeconds(900)
                    .GetAsync();

~122 秒后,我收到以下異常:代碼:tooManyRetries 消息:發送請求時重試次數超過 1 次。

如前所述,如果我限制行數,我可以讓它工作——200 行在大約 12 秒內返回,400 行在大約 24 秒內返回。 奇怪的是上周還不錯,所以也許微軟改變了什么?

我設法通過使用分頁來解決我的問題:

List<DriveItem> allItems = new();

var result = await GraphClient.Sites[siteID].Drives[documentLibraryID].Root.Children
                .Request()
                .Expand("listItem")
                .Top(100)
                .GetAsync();

            var pageIterator = PageIterator<DriveItem>
                .CreatePageIterator(
                    GraphClient,
                    result,
                    (item) =>
                    {
                        allItems.Add(item);
                        return true;
                    });

            await pageIterator.IterateAsync();

這樣我一次得到 100 個結果,這在超時閾值內。 然后將它們全部添加到列表 (allItems) 中,因此我不需要更改代碼的 rest。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM