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 :
Voici mon LDAP URL dans le web.config :
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(); }Ce code fonctionne parfaitement, pas le moindre problème<add key="LdapUrl" value="LDAP://OU=SousOu,OU=ouPrincipal,DC=dc1,DC=dc2,DC=dc3"/>, 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.
Partager