首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroupPrincipal.IsMemberOf始终返回false

GroupPrincipal.IsMemberOf始终返回false
EN

Stack Overflow用户
提问于 2011-10-04 21:45:41
回答 3查看 2.6K关注 0票数 2

我有一个函数可以检查一个组是否是一个组的成员。我有两个函数的变体,都不能像预期的那样工作:

代码语言:javascript
复制
public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
        {
            return gp.IsMemberOf(pgp); 
        }

代码语言:javascript
复制
 public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
        {
            if (gp != null && pgp != null)
            {
                return pgp.Members.Contains(gp);
            }
            else
            {
                return false;
            }
        }

这两种方法看起来都很有前途,但是总是返回false。当调用GroupPrincipal.save方法时,会抛出一个对象已存在错误。

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

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

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

使用框架3.5 -提前感谢

EN

回答 3

Stack Overflow用户

发布于 2015-02-19 23:00:40

我知道现在有点晚了,但是为了将来的参考,你可能想试试这个。

代码语言:javascript
复制
public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
    {
        return gp.GetMembers(true).Contains(pgp);
    }
票数 3
EN

Stack Overflow用户

发布于 2011-10-04 22:44:05

我希望这能帮助下一位开发者解决同样的问题:

是这样解决的:

代码语言:javascript
复制
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; 
            }
}

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

票数 1
EN

Stack Overflow用户

发布于 2012-02-01 22:20:17

在我的例子中,问题与组的大小有关,正如here所描述的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7648887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档