我正在尝试从Azure AD获取特定组中的所有用户。当前有480个用户。当我获取它们时,我只能得到20,我认为这是默认设置吗?
var users = await _gsc.Groups["GROUP_ID"].Request().Expand("members").GetAsync();
我该如何全部获取?
编辑:
好像我删除了.Expand(“ members”)并使用.Members.Request()。GetAsync(),结果上有一个NextPageResult选项...我将尝试一下。
答案 0 :(得分:1)
是的,您是正确的。这是$ expand参数的限制。
如果要所有组,请检索member属性,然后跟随oData.NextLink(如果存在于结果页面中)。以下链接描述了几种与组相关的功能: https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/groups-operations
有些功能也可用于组传递,只需遵循通常位于以上链接右侧的导航链接即可。
答案 1 :(得分:0)
是的,正如Mohit_Garg提到的,返回的最大对象数为20。有关更多信息,请参见Supported queries, filters, and paging options | Graph API concepts。
以下限制适用于$ expand表达式:
- 一个请求最多返回20个对象。
好像我删除了.Expand(“ members”)并使用.Members.Request()。GetAsync(),结果上有一个NextPageResult选项...我将尝试一下。
是的,您是对的。我们可以使用 NextPageRequest 获取所有记录。页数是100。
以下是演示代码。
IGroupMembersCollectionWithReferencesPage users = _gsc.Groups["GROUP_ID"].Members.Request().GetAsync().Result;
do
{
Console.WriteLine("number:" + users.Count);
foreach (var usr in users)
{
Console.WriteLine("user: {0}", usr.Id);
}
}
while(users.NextPageRequest != null && (users = users.NextPageRequest.GetAsync().Result).Count > 0);