Traitement LDAP trop long!
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:
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 :
Citation:
<add key="LdapUrl" value="LDAP://OU=SousOu,OU=ouPrincipal,DC=dc1,DC=dc2,DC=dc3"/>
Ce code fonctionne parfaitement, pas le moindre problème :ccool:, en revanche, il met environ 15 secondes avant de me donner un résultat.:aie:
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.