我使用.Net SDK多次调用Azure Graph API。
我们使用以下代码获取用户和相关选择:
var usersResponse = await _graphServiceClient.Users.GetAsync(request =>
{
request.QueryParameters.Select = new[]
{
nameof(User.DisplayName),
nameof(User.Mail),
nameof(User.PreferredLanguage)
};
}, cancellationToken: cancellationToken);
但是当查询一个组的所有成员时,我不能使用它,因为它会导致AdditionalData的空集,但是使用以小写字母开头的字符串值可以工作,所以我们必须使用下面的代码。
var usersResponse = await _graphServiceClient.Groups[azureGroupId].Members.GetAsync(request =>
{
request.QueryParameters.Select = new[]
{
"displayName",
"mail",
"preferredLanguage"
};
}, cancellationToken: cancellationToken);
为什么我不能在Members调用中使用大写的nameof
,但可以在Users调用中使用?
1条答案
按热度按时间a64a0gku1#
我尝试在Microsoft图形资源管理器和c#代码中重现并检查该方案。
在这里,用户可以查询***DirectObjects***,因此任何情况都可以解决。
但是对于一个组的成员,它必须首先查询其Odata类型为Microsoft.graph.user的directoryObjects,即;用户,然后选择参数,所以直接使用nameOf不是办法。
1.组可以将用户、组织联系人、设备、服务主体和其他组作为成员,因此不能是同一类型。
查询:
Get https://graph.microsoft.com/v1.0/groups/22290xxxxxx-0e5d051cda67/members?$select=DisplayName,Id,GivenName
在以下查询中,使用大写正确。
但直接选择参数无法提供所需的输出。列表成员是目录对象集合:group resource type - Microsoft Graph v1.0 | Microsoft Learn
对于成员,查询
https://graph.microsoft.com/v1.0/groups/222xxxcda67/members?$select=displayName,id,givenName
的小写字母工作正常和但与查询完美配合:
您可以先获取成员,这将提供用户列表,然后您可以使用
nameof()
运算符。这是我如何在我的API中使用:
"并得到了输出