Lors de la search du count Active Directory, System.Runtime.InteropServices.COMException: la limite de time pour cette request a été dépassée

Je reçois une erreur lorsque je search des users LDAP dans AD. Si je restreignais DirectorySearcher.SizeLimit = 1, alors je reçois le résultat (1 résultat est returnné). Mais lorsque j'ajoute le SizeLimit à plus de 1 (SizeLimit = 2 également), je reçois " l' erreur de timeout pour cette request a été dépassée ". Permettez-moi de savoir comment faire pour éviter cette erreur et quels sont les scénarios possibles en raison de laquelle je reçois cette erreur.

Notez également que l'erreur vient uniquement lorsque mon DirectorySearcher.Filter possède ID, Nom, Email. Si je search seulement par Nom ou ID ou Email individuellement, je ne reçois aucune erreur de timeout et j'obtiens des résultats.

Filtrer pour searchr "a" avec ID, Nom et Email (Ceci lance une erreur temporisée):

(| (&(|(objectClass=person)(objectCategory=user))(!objectCategory=computer)((|(samAccountname=a*)(givenname=a*)(mail=a*)))) (&(|(objectCategory=group)(objectClass=groupOfUniqueNames)(objectClass=groupOfNames))(!objectCategory=computer)(cn=a*)) ) 

Filtrer pour searchr "a" avec ID (Cela fonctionne bien) :

 (| (&(|(objectClass=person)(objectCategory=user))(!objectCategory=computer)(samAccountname=a*)) (&(|(objectCategory=group)(objectClass=groupOfUniqueNames)(objectClass=groupOfNames))(!objectCategory=computer)(cn=a*)) ) 

Merci

Cette requête n'est pas bien formée et comporte des informations redondantes et incorrectes.

Je spécifierais objectCategory = personne. Et si vous faites cela, vous n'avez pas besoin d'objectClass = user, car il est inclus dans la catégorie objectCategory =.

Vous pouvez essayer ceci:

 (| (&(objectCategory=person)(|(samAccountname=a*)(givenname=a*)(mail=a*))) (&(|(objectCategory=group)(objectClass=groupOfUniqueNames)(objectClass=groupOfNames))(cn=a*)) ) 

Notez également:

"… si vous avez le choix entre l'utilisation de objectCategory et objectClass, il est recommandé d'utiliser objectCategory. C'est parce que objectCategory est à la fois valide et indexée, tandis que objectClass est multivalorisé et non indexé (sauf sur Windows Server 2008 et ci-dessus). Une requête utilisant un filter avec objectCategory sera plus efficace qu'un filter similaire avec objectClass. Les controllers de domaine Windows Server 2008 (et ci-dessus) ont un comportement spécial qui indexe l'atsortingbut objectClass. Vous pouvez en profiter si tous vos les controllers de domaine sont Windows Server 2008 ou si vous spécifiez un controller de domaine Windows Server 2008 dans votre requête. "

http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms677612%28v=vs.85%29.aspx