2010-07-08 3 views
1

Я пытаюсь сделать LDAP поиск, однако я получаю следующее сообщение об ошибке:Административный Превышен предел Во время C# Поиск LDAP

Unhandled Exception: System.Runtime.InteropServices.COMException (0x80072024): T 
he administrative limit for this request was exceeded. 

    at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.MoveNext 
() 
    at System.DirectoryServices.DirectorySearcher.FindOne() 

Вот код: (Ошибка генерируется в FindOne())

 DirectoryEntry dirEntry = new DirectoryEntry("LDAP://myldap.com:1701/ou=People,o=My Company,c=CA", "", "", AuthenticationTypes.Anonymous); 
     DirectorySearcher dirSearcher = new DirectorySearcher(dirEntry); 

     string filter = "mail"; 
     string filterValue = "[email protected]"; 

     dirSearcher.Filter = string.Format("({0}={1})", filter, filterValue); 

     SortOption sortOption = new SortOption(filter, SortDirection.Ascending); 

     dirSearcher.Sort = sortOption; 
     dirSearcher.PropertiesToLoad.Add("uid"); 
     dirSearcher.SearchScope = SearchScope.Subtree; 

     SearchResult result = dirSearcher.FindOne(); 

     DirectoryEntry directEntry = result.GetDirectoryEntry(); 
     Console.WriteLine("Result: {0}", directEntry.Properties["uid"].Value.ToString()); 

Любые идеи, как обойти это?

+0

Подходит ли этот LDAP к Active Directory или к другому каталогу LDAP? Если другое: какой? –

+0

Да Active Directory –

+0

Путь LDAP выглядел немного странно - я не был уверен, поддерживает ли AD такие вещи, как 'o =' и 'c =' - они обычно использовались в OpenLDAP или Novell eDirectory. –

ответ

1

Удалены эту линию, и она работает:

dirSearcher.PropertiesToLoad.Add("uid"); 

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

+0

Согласно справочному сайту Ричарда Мюллера (http://www.rlmueller.net/UserAttributes.htm), Active Directory, похоже, не содержит атрибут «uid» - должен быть что-то еще, что вы ищете .... –

+0

Я вижу «uid» по адресу http://www.rlmueller.net/References/Schema.xls –

1

Многие реализации сервера LDAP имеют ограничения на количество результатов, которые будут возвращены в запросе.

AD по умолчанию 1000 или 2000. Я забыл, что небрежно. eDirectory по умолчанию не имеет ограничений. Другие меняются.

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

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