我正在使用 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 抛出的。 谢谢
如果 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;
});