并非所有用户都使用 Microsoft.Graph 检索
Not all users are retrieved with Microsoft.Graph
我需要从 Azure Active Directory 中检索组的所有成员(用户),包括嵌套组中的成员。这是我的代码:
ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphServiceClient = new GraphServiceClient(authenticationProvider);
IGroupTransitiveMembersCollectionWithReferencesPage members = await graphServiceClient.Groups["{myGroupId"]
.TransitiveMembers
.Request()
.GetAsync();
List<string> repEmails = members.OfType<User>().Select(member => $"{member.DisplayName} <{member.Mail}>").ToList();
这确实检索了数据,但今天我意识到我的结果列表中缺少一些用户。我是否遗漏了什么,或者对可以检索的用户数量有任何限制吗?
P.S。我在 Stack Overflow 的其他地方找到了以下内容:
Please note that it might not return all the users if there are too
many. In that case you will get uri with nextLink to get next batch of
results.
如何做到这一点?
所有 Graph 请求,其中 return 一个集合(如用户、组等)被放入一个集合对象中,该集合对象(在 C# 中)以 Page[=25= 命名] 在 class 名称的末尾。
所以你只得到前n个元素。您可以通过 $top
查询参数(或在 C# 中使用 .Top(x)
)设置所需的值。但请注意,最大允许值可能因您要询问的集合类型而异。它们中的大多数的最大值为 999,但少数具有较低的值(如果您选择的数字太高,您会收到一条包含最大允许值的错误消息)。
检索到的页面对象有一个 属性 NextPageRequest
这将不为空,如果有更多数据可用并且您可以通过调用它来获取它:
var moreMembers = await members.NextPageRequest.GetAsync();
您可以在 while 循环中执行此操作,直到 属性 NextPageRequest
为 null
以获得所有成员的列表。
我需要从 Azure Active Directory 中检索组的所有成员(用户),包括嵌套组中的成员。这是我的代码:
ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphServiceClient = new GraphServiceClient(authenticationProvider);
IGroupTransitiveMembersCollectionWithReferencesPage members = await graphServiceClient.Groups["{myGroupId"]
.TransitiveMembers
.Request()
.GetAsync();
List<string> repEmails = members.OfType<User>().Select(member => $"{member.DisplayName} <{member.Mail}>").ToList();
这确实检索了数据,但今天我意识到我的结果列表中缺少一些用户。我是否遗漏了什么,或者对可以检索的用户数量有任何限制吗?
P.S。我在 Stack Overflow 的其他地方找到了以下内容:
Please note that it might not return all the users if there are too many. In that case you will get uri with nextLink to get next batch of results.
如何做到这一点?
所有 Graph 请求,其中 return 一个集合(如用户、组等)被放入一个集合对象中,该集合对象(在 C# 中)以 Page[=25= 命名] 在 class 名称的末尾。
所以你只得到前n个元素。您可以通过 $top
查询参数(或在 C# 中使用 .Top(x)
)设置所需的值。但请注意,最大允许值可能因您要询问的集合类型而异。它们中的大多数的最大值为 999,但少数具有较低的值(如果您选择的数字太高,您会收到一条包含最大允许值的错误消息)。
检索到的页面对象有一个 属性 NextPageRequest
这将不为空,如果有更多数据可用并且您可以通过调用它来获取它:
var moreMembers = await members.NextPageRequest.GetAsync();
您可以在 while 循环中执行此操作,直到 属性 NextPageRequest
为 null
以获得所有成员的列表。