Dik*_*dhi 4 c# beta microsoft-graph-sdks microsoft-graph-api
我们使用Microsoft Graph API Beta 版本通过以下代码从 Azure AD 检索所有用户。API 在响应中仅返回 100 个用户,并且为了使用分页响应,我们尝试了NextPageRequest属性。但它总是会回报null财产NextPageRequest。因此,它永远不会进入 while 循环来检索其余用户。
测试版 SDK 版本:4.0.1.0
代码:
List<User> usersList = new List<User>();
IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().GetAsync();
// Add the first page of results to the user list
usersList.AddRange(users.CurrentPage);
// Fetch each page and add those results to the list
while (users.NextPageRequest != null)
{
users = await users.NextPageRequest.GetAsync();
usersList.AddRange(users.CurrentPage);
}
log.Info("Users count: " + usersList.Count.ToString());
return usersList;
Run Code Online (Sandbox Code Playgroud)
我关注的参考链接:
对此的任何帮助将不胜感激!
Shi*_*rma 12
下面的代码对我来说效果很好。
public static async Task<List<User>> getUsers()
{
List<User> usersList = new List<User>();
graphClient.BaseUrl = "https://graph.microsoft.com/beta";
IGraphServiceUsersCollectionPage users = await graphClient.Users
.Request()
.GetAsync();
usersList.AddRange(users.CurrentPage);
while (users.NextPageRequest != null)
{
users = await users.NextPageRequest.GetAsync();
usersList.AddRange(users.CurrentPage);
}
return usersList;
}
Run Code Online (Sandbox Code Playgroud)
检查 Azure Active Directory 用户刀片中的用户并查看其中有多少用户。您还可以通过简单地使用 $top 查询参数扩展代码来测试用户数量是否超过 100 个,该参数为每个请求提供 998 条记录,如下所示。
IGraphServiceUsersCollectionPage users = await graphClient.Users
.Request()
.Top(998)
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
您还可以在Graph Explorer中测试 Graph API 调用。
编辑:
经过长时间的研究,我发现这是 Microsoft Graph Beta SDK 中的一个错误,因为它总是在NextPageRequest. 但有趣的是,它是odata.nextLink在AdditionalData属性中发送的。因此,如果您使用 Graph Beat SDK,请使用以下代码。
public static async Task<List<User>> getUsers()
{
List<User> usersList = new List<User>();
IGraphServiceUsersCollectionPage users = await graphClient.Users
.Request()
.GetAsync();
usersList.AddRange(users.CurrentPage);
try
{
while (users.AdditionalData["@odata.nextLink"].ToString() != null)
{
users.InitializeNextPageRequest(graphClient, users.AdditionalData["@odata.nextLink"].ToString());
users = await users.NextPageRequest.GetAsync();
usersList.AddRange(users.CurrentPage);
}
}
catch(Exception e)
{
}
return usersList;
}
Run Code Online (Sandbox Code Playgroud)
注意: Microsoft 不建议在生产中使用其Graph Beta 版本,因为它们可能会发生变化。
| 归档时间: |
|
| 查看次数: |
5900 次 |
| 最近记录: |