【问题标题】:Filter group members by displayName does not work按 displayName 过滤组成员不起作用
【发布时间】:2021-06-15 23:37:33
【问题描述】:

我需要提供一个端点,允许用户搜索组内的成员

下面的代码在没有传入过滤器时工作正常(它返回组的成员),但是当传入 queryString 时,我得到了这个错误

Microsoft.Graph.ServiceException:'代码:Request_UnsupportedQuery 消息:当前不支持对引用属性查询的指定过滤器。

有什么明智的方法解决这个问题吗?

MS 声称此属性是可过滤的,但是否只能通过 url API?这是否意味着我正在尝试做的事情是不可能的?

似乎在他们的示例中,他们总是设置ConsistencyLevel: Eventual - 但我不明白我们如何使用GraphServiceClient进行设置

我尝试将其添加为标题:

var consistencyLevelHeader = new HeaderOption("consistencylevel", "eventual");
request.Headers.Add(consistencyLevelHeader);

但我得到相同的结果

var groupId = "guid-of-the-group";

var request = _graphServiceClient.Value.Groups[groupId]
    .Members
    .Request();

if (!string.IsNullOrEmpty(queryString))
{
    request = request.Filter($"startswith(displayName,'{queryString}')");
}

var groupMembersCollection = await request
    .GetAsync();

var userDtos = groupMembersCollection.Select(member =>
    new AzureADAccountDTO
    {
        ProviderKey = member.Id,
        EmailAddress = ((User)member).Mail,
        Name = ((User)member).DisplayName,
    })
    .ToList();

return userDtos;

【问题讨论】:

    标签: c# azure-active-directory microsoft-graph-api graphserviceclient


    【解决方案1】:

    您还需要添加 $count 查询参数以及 ConsistencyLevel 标头才能获得成功的响应。

    请求如下所示

    https://graph.microsoft.com/v1.0/groups/0023c709-3556-4296-a6ab-6df2a0a1113c/members?$count=true&$filter=startswith(displayName, 's')

    您可以在Graph Explore 中测试这些图形调用。

    【讨论】:

    • 但是在我的问题中使用 SDK 时如何添加查询参数? Filter 很简单,因为它提供了一种方法
    • @Bassie 像这样使用 queryOptions stackoverflow.com/questions/64475666/…
    • 将搜索替换为计数和午餐为真。
    • 我已经尝试过,但得到了以下响应。指定了无法识别的查询参数:'count'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2021-12-02
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多