Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Microsoft图形客户端库访问user.MemberOf_C#_Microsoft Graph Api - Fatal编程技术网

C# 使用Microsoft图形客户端库访问user.MemberOf

C# 使用Microsoft图形客户端库访问user.MemberOf,c#,microsoft-graph-api,C#,Microsoft Graph Api,注意:在客户端库repo中,他们回答说这是服务库中的问题,而不是.NET库中的问题 在开发过程中,我们一直在这样做,以获得用户组: var user=await-GraphClient.Users[userId].Request().Expand(“memberOf”).GetAsync() 其结果被馈送到一个方法,该方法将使用假定返回的“NextPageRequest”对象获得当前页面以外的结果。我们的假开发用户帐户,以及早期的真实用户从来没有足够的组成员资格来要求NextPageReques

注意:在客户端库repo中,他们回答说这是服务库中的问题,而不是.NET库中的问题

在开发过程中,我们一直在这样做,以获得用户组:

var user=await-GraphClient.Users[userId].Request().Expand(“memberOf”).GetAsync()

其结果被馈送到一个方法,该方法将使用假定返回的“NextPageRequest”对象获得当前页面以外的结果。我们的假开发用户帐户,以及早期的真实用户从来没有足够的组成员资格来要求NextPageRequest逻辑,对它的测试被遗忘了

在获得20多个组的用户后,最终很明显,提出上述请求会返回一页的会员资格,但不会返回下一个用于后续请求选项的GEREQUEST。您关于集合的文档让人觉得应该这样做

我相信你已经知道,一种有效的方法是这样的:

List userGroups=wait-GraphClient.Users[userId].MemberOf.Request().GetAsync().CurrentPage.Where(p=>p.GetType()==typeof(Microsoft.Graph.Group)).Cast().ToList()

据我们所知,这将返回用户的所有组成员身份。如果意图是Expand不能与“memberOf”一起使用,那么它就不应该工作。目前,在租户的800个用户中,有760个用户使用了旧代码,其余的用户编写了检查:)。如果我们的.Expand(“memberOf”)操作不正确,请告诉我


此外,GetMemberGroups的工作方式与MemberOf不同。目的是什么?也许像
GetMemberGroups(securityEnabledOnly=false,expandGroupInfo=false)
这样的操作会更清晰

你的观察是正确的$expand在目录中受到一定限制,最多只能扩展20个项目,不支持分页。对于其他图形服务,这不一定是正确的。请参阅和$expand,其中对此进行了记录

不幸的是,更改行为以返回$expand=memberOf之类的不受支持的错误将代表一个破坏性的更改。我们可以考虑这一变化为一个新的版本。< /P> 我们还希望向Graph元数据文档添加更多注释,这些注释可能能够描述支持展开和分页的位置。这也将有助于限制客户端库不显示服务无法支持的选项


希望这能有所帮助,

在看了一些之后,我找到了一个答案,可以为用户返回所有组

public async Task<List<string>> GetCurrentUserGroups(GraphServiceClient graphClient)
    {
        var totalGroups = new List<string>();
        var groups = await graphClient.Me.MemberOf.Request().GetAsync();

        while (groups.Count > 0)
        {
            foreach (Group g in groups)
            {
                totalGroups.Add(g.DisplayName);
            }
            if (groups.NextPageRequest != null)
            {
                groups = await groups.NextPageRequest.GetAsync();
            }
            else
            {
                break;
            }
        }
        return totalGroups;
    }
公共异步任务GetCurrentUserGroups(GraphServiceClient graphClient)
{
var totalGroups=新列表();
var groups=await graphClient.Me.MemberOf.Request().GetAsync();
而(groups.Count>0)
{
foreach(g组分组)
{
totalGroups.Add(g.DisplayName);
}
if(groups.NextPageRequest!=null)
{
groups=wait groups.NextPageRequest.GetAsync();
}
其他的
{
打破
}
}
返回总体组;
}

感谢您在GitHub上提出这个问题,在这里,这是一个巨大的帮助。