Bonjour,

Je souhaite récupérer à l'aide d'un web service le nom et prénom de tous les utilisateurs de mon AD qui correspondent à une OU spécifique et qui on un email et un employeeID.

Voici le code que j'utilise :
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
[WebMethod]
        public ADUser[] GetUser()
        {
            List<ADUser> adUserList = new List<ADUser>();
            try
            {
                DirectoryEntry ldap = new DirectoryEntry(ConfigurationSettings.AppSettings["LdapUrl"], ConfigurationSettings.AppSettings["LdapLogin"], ConfigurationSettings.AppSettings["LdapPwd"]);
                DirectorySearcher searcher = new DirectorySearcher(ldap);
                searcher.Filter = "(&(objectClass=user)(mail=*)(employeeID=*))";
                SearchResultCollection AdUsers = searcher.FindAll();
                foreach (SearchResult result in AdUsers)
                {
                    DirectoryEntry DirEntry = result.GetDirectoryEntry();
                    ADUser user = new ADUser(DirEntry.Properties["cn"].Value.ToString());
                    adUserList.Add(user);
                }
                adUserList.Sort();
            }
            catch (Exception ex)
            {
                adUserList.Add(new ADUser(ex.Message));
            }
            return adUserList.ToArray();
        }
Voici mon LDAP URL dans le web.config :
<add key="LdapUrl" value="LDAP://OU=SousOu,OU=ouPrincipal,DC=dc1,DC=dc2,DC=dc3"/>
Ce code fonctionne parfaitement, pas le moindre problème , en revanche, il met environ 15 secondes avant de me donner un résultat.
Je souhaites donc savoir s'il est possible d'améliorer mon traitement pour que celui-ci soit plus rapide.

Je suis preneur de toute optimisation.
Merci par avance.