2015-06-14 5 views
0

Я пытаюсь получить все группы пользователей в активной директории с кодом C#.Получить все группы пользователей из активного каталога в C#

Это мой код:

private List<GroupPrincipal> GetGroups() 
{ 
    string userName = User.Identity.Name; 
    string host = Request.Url.Host.ToLower(); 
    List<GroupPrincipal> result = new List<GroupPrincipal>(); 

    UserPrincipal user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain, host), IdentityType.SamAccountName, userName); 
    foreach (GroupPrincipal group in user.GetGroups()) 
    { 
     result.Add(group); 
    } 
    return result; 
} 

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

Что я делаю неправильно?

Спасибо заранее!

+0

Вы делаете это из веб-приложения? – Garett

+0

Да, я. Я использую приложение asp –

ответ

0

Чтобы подключиться к Active Directory, создайте объект PrincipalContext.

PrincipalContext insPrincipalContext = new PrincipalContext(ContextType.Domain, "MyDomain", 
            "DC=MyDomain,DC=com"); 

код, чтобы получить все группы: Создать объект GroupPrincipal и вызовите SearchGroups(), который возвращает список всех групп данного домена.

 private void ListGroups(){ 
     GroupPrincipal insGroupPrincipal = new GroupPrincipal(insPrincipalContext); 
     insGroupPrincipal.Name = "*"; 
     SearchGroups(insGroupPrincipal);} 

    private void SearchGroups(GroupPrincipal parGroupPrincipal) 
    { 
     List<Principal> oList = new List<Principal>(); 
     PrincipalSearcher insPrincipalSearcher = new PrincipalSearcher(); 
     insPrincipalSearcher.QueryFilter = parGroupPrincipal; 
     PrincipalSearchResult<Principal> results = insPrincipalSearcher.FindAll(); 
     foreach (Principal p in results) 
     { 
      oList.Add(p); 
     } 
    } 

Эта ссылка также поможет вам - http://www.codeproject.com/Articles/38344/Using-System-DirectoryServices-AccountManagement

Смежные вопросы