Bonsoir à tous,

Je travaille actuellement sur une base Active Directory et manipule donc des objets du NameSpace System.DirectoryServices.

j'ai écris une petite méthode qui me permet d'exécuter une requête LDAP et qui me retourne un object de type "List<DirectoryEntry>":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public List<DirectoryEntry> ExecuterRequeteLDAP(String requete)
        {
            if (requete == null || requete == String.Empty)
            {
                throw new ArgumentNullException("requete");
            }
 
            List<DirectoryEntry> listeRetour = new List<DirectoryEntry>();
 
            try
            {
                DirectorySearcher searcher = new DirectorySearcher(ldap, requete);
 
                // On récupère les entrées trouvées lors de la recherche
                SearchResultCollection resultColl = searcher.FindAll();
 
                if (resultColl != null)
                {
                    //Parcours de la collection
                    foreach (SearchResult result in resultColl)
                        listeRetour.Add(result.GetDirectoryEntry());
                }
            }
            catch (Exception ex)
            {
                //TODO :Gestion Exception
            }
 
            return listeRetour;
        }
Je lui passe cette requête en paramètre : (&(objectClass=user)(userAccountControl=66048))

Mon souci vient du fait qu'entre l'exécution de cette ligne: if (resultColl != null)
et de celle-là foreach (SearchResult result in resultColl)
J'ai environ entre 4 et 5 minutes qui s'écoulent... (Une fois qu'on tourne dans le foreach ça dépote, pas de problème). Ensuite la méthode retourne bien ce que j'attend.

Pour info l'exécution de cette même requête dans la MMC microsoft ne prend que 3 à 4 secondes. Et elle retourne environ 1300 éléments.

Ma question est donc d'où cela vient-il? faut-il du temps à un objet de type "SearchResultCollection" pour se construire et donc permettre l'accès aux objets de sa collection? Faut-il lui placer un flag quelconque que j'aurais omit?

Ce que je me dis c'est que si la MMC arrive à construire une collection de 1300 éléments en 4 secondes je devrais bien y arriver aussi.
NB : la compilation en Release ne change absolument rien aux performances...

Merci d'avance!

Rastamath69