GroupPrincipal.IsMemberOf всегда возвращает false - PullRequest
2 голосов
/ 04 октября 2011

У меня есть функция, которая проверяет, является ли группа членом группы. У меня есть 2 варианта функции, ни одна из них не работает, как ожидалось:

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.save, объект уже существует, выдается ошибка.

Я запустил цикл foreach, чтобы получить имена членов родительской группы, и сравнил с новым именем добавляемого члена, и нет никаких сомнений, что этот член действительно существует.

Я мог бы использовать LINQ для сравнения строк по имени, но это не идеально.

Что? Если что я делаю не так? Есть ли лучший способ определить, существует ли группа в группе.

Использование фреймворка 3.5 - заранее спасибо

Ответы [ 3 ]

2 голосов
/ 19 февраля 2015

Я понимаю, что уже поздно, но для будущих ссылок вы можете попробовать это.

public bool IsGroupGroupMember(GroupPrincipal gp, GroupPrincipal pgp)
    {
        return gp.GetMembers(true).Contains(pgp);
    }
1 голос
/ 04 октября 2011

Я надеюсь, что это поможет следующему разработчику с той же проблемой:

Решено так:

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; 
            }
}

Я до сих пор не знаю, почему методы в моем первоначальном вопросе не сработали, как ожидалось.

0 голосов
/ 01 февраля 2012

В моем случае проблема была связана с размером группы, как также описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...