Microsoft graph api 用于获取共享点站点中的列表,但未列出所有列表

问题描述 投票:0回答:1

我正在使用 graph api v5(dotnet sdk for dotnet)来获取站点中的共享点列表。正如下面的 Microsoft 文档所述,我在选择查询中使用 system 方面来获取列表。 https://learn.microsoft.com/en-us/graph/api/list-list?view=graph-rest-1.0&tabs=csharp 但这并没有返回共享点站点中的所有列表,但我得到了一些列表。

下面是我写的代码

 var graphClient = GetGraphClient();
 var result = await graphClient.Sites[siteId].Lists.GetAsync((requestConfiguration) =>
 {
       requestConfiguration.QueryParameters.Expand = new string[] { "drive" };
       requestConfiguration.QueryParameters.Select = new string[] { "system", "*" };
 });

此代码仅在结果的第一页中返回站点中的 50 个列表,并且 nextLink 为空。 对于之前版本的图 (v4),相同的代码返回了 66 个列表。 尝试了另一种方法,它也返回 50 个列表。

  var requestInformation = GraphServiceClient.Sites[siteId].Lists.ToGetRequestInformation();
  //requestInformation.UrlTemplate = requestInfo.UrlTemplate.Insert(requestInfo.UrlTemplate.Length   - 1, ",%24select,%24expand");
  requestInformation.QueryParameters.Add("%24select", "system,*");
  requestInformation.QueryParameters.Add("%24expand", "drive");
  var result = await GraphServiceClient.RequestAdapter.SendAsync<ListCollectionResponse>(requestInformation, ListCollectionResponse.CreateFromDiscriminatorValue);

我已经调试并获取了 sdk 生成的 url,并在图形资源管理器中尝试了该 url,它也返回了 50 个列表。 谁能帮我用这个 C# 代码来获取所有列表?

使用第二种方法,如果我启用注释行,我会得到一个异常“服务器返回了意外的状态代码,并且没有为此代码注册错误工厂:400”。根据堆栈跟踪,这是从 Microsoft.Kiota.Http.HttpClientLibrary.HttpClientRequestAdapter 抛出的。 谢谢

c# microsoft-graph-api microsoft-graph-sdks kiota
1个回答
0
投票

如果 URL 在 Graph Explorer 中也仅返回 50 个列表,则可能是服务器端问题。您是否尝试过使用

$top
查询参数返回 500 个列表?

var graphClient = GetGraphClient();
var result = await graphClient.Sites[siteId].Lists.GetAsync((requestConfiguration) =>
 {
       requestConfiguration.QueryParameters.Expand = new string[] { "drive" };
       requestConfiguration.QueryParameters.Select = new string[] { "system", "*" };
       requestConfiguration.QueryParameters.Top = 500;
 });
© www.soinside.com 2019 - 2024. All rights reserved.