GroupPrincipal.IsMemberOf总是返回false

本文关键字:返回 false IsMemberOf GroupPrincipal | 更新日期: 2023-09-27 18:10:35

我有一个函数检查一个组是否是组的成员。我有两个函数的变体,都没有按预期工作:

public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
        {
            return gp.IsMemberOf(pgp); 
        }

 public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
        {
            if (gp != null && pgp != null)
            {
                return pgp.Members.Contains(gp);
            }
            else
            {
                return false;
            }
        }

两个看起来都很有希望,但是总是返回false。调用GroupPrincipal时。方法时,抛出对象已存在错误。

我运行foreach循环来获取父组成员的名称,并与要添加的新成员名称进行比较,毫无疑问该成员确实存在。

我可以使用LINQ对name进行字符串比较,但这并不理想。

什么?我做错了什么吗?是否有更好的方法来确定一个组是否存在于一个组中。

使用框架3.5 -提前感谢

GroupPrincipal.IsMemberOf总是返回false

我知道这有点晚了,但是对于将来的参考,您可能想尝试一下。

public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
    {
        return gp.GetMembers(true).Contains(pgp);
    }

我希望这有助于下一个开发人员遇到同样的问题:

是这样解决的:

public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
        {
            PrincipalSearchResult<Principal> result = gp.GetGroups();
            Principal grp = result.Where(g => g.Sid == pgp.Sid).FirstOrDefault();
            if (grp == null)
            {
                return false; 
            }
            else
            {
                return true; 
            }
}

我仍然不知道为什么我原来的问题中的方法没有像预期的那样工作。

在我的例子中,问题与这里描述的组的大小有关。