Почему GroupPrincipal.FindByIdentity возвращает ноль, даже если я знаю, что группа существует? - PullRequest
2 голосов
/ 05 августа 2011

Почему бы

GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), 
                                                         "TEST_DESTINATION_GRP");

вернуть null?Я точно знаю, что TEST_DESTINATION_GRP существует в организационной единице группы.

Мой код:

private void addUserToGroup(string userName, string groupName)
{
    try
    {
        UserPrincipal user = UserPrincipal.FindByIdentity(getPrincipalContext(), IdentityType.SamAccountName, "jcolon");
        GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), "TEST_DESTINATION_GRP");
        //just to show that I can access AD            
        ArrayList x = getUserGroups(userName);

        foreach (var xy in x)
        {
            Console.WriteLine(xy);
        }//I can access AD FINE

        if (group == null)
        { Console.WriteLine("Wtf!"); }
        Console.WriteLine(user); 
        Console.WriteLine(group + "empty why!!!!");
    }
    catch (Exception e)
    { 
        //log e
    }
}

private PrincipalContext getPrincipalContext()
{
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain,sDefaultOU);          
    return oPrincipalContext;
}   

Вывод вышеуказанного кода:

Domain Users
GRP_ADMIN_SERVER
GRP_PROG_III
CTXXA-FlexUser
CTXXA-Users
Wtf
Abanico, Elnora@MSH
empty why!!!!

Есть мысли?

1 Ответ

6 голосов
/ 05 августа 2011

Каковы значения в sDomain и sDefaultOU в вашем getPrincipalContext методе ??

Я бы попробовал следующие шаги:

  1. Создайте свойPrincipalContext без какого-либо домена или имени OU - в этом случае будет использоваться ваш домен по умолчанию и его узел верхнего уровня:

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
    

    Поиск сейчас - он находит вашу группу, которую вы ищете??

  2. Убедитесь, что домен и значения sDefaultOU являются правильными - если вы подключаете свой основной контекст к одному подразделению, вы не можете искать в другом подразделении, очевидно, (если это не ребенок-OU OU, к которому вы подключаетесь).

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