2010-07-08 21 views
1

Je suis en train de faire une recherche LDAP mais je continue à obtenir l'erreur suivante:Limite administrative Dépassé Au cours de C# LDAP Recherche

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() 

Voici le code: (L'erreur est levée à 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()); 

Des idées pour contourner ce problème?

+0

Est-ce LDAP contre Active Directory, ou contre un autre annuaire LDAP? Si autre: lequel ?? –

+0

Oui Active Directory –

+0

Le chemin LDAP semblait juste un peu étrange - je ne savais pas si AD prenait en charge des choses comme 'o =' et 'c =' - celles-ci étaient généralement utilisées dans OpenLDAP ou Novell eDirectory. –

Répondre

1

soustrayait cette ligne et il fonctionne:

dirSearcher.PropertiesToLoad.Add("uid"); 

doit avoir été l'UID de détourner chaque résultat au lieu d'un résultat de mise en correspondance et a donc été de dépasser la limite d'administration.

+0

Selon le site de référence de Richard Mueller (http://www.rlmueller.net/UserAttributes.htm), Active Directory ne semble pas contenir d'attribut "uid" - il doit s'agir d'autre chose que vous recherchez .... –

+0

Je vois "uid" sous http://www.rlmueller.net/References/Schema.xls –

1

De nombreuses implémentations de serveur LDAP ont des limites sur le nombre de résultats renvoyés dans une requête. Par défaut, la valeur par défaut est 1000 ou 2000. J'ai oublié par hasard. eDirectory est par défaut sans limite. D'autres varient.

Vous pouvez demander aux admins de modifier la limite, ou bien, d'afficher votre code de sorte qu'il ne reçoive qu'une page (ou un nombre limité de résultats) à la fois.