在searchActive Directory帐户时,System.Runtime.InteropServices.COMException:超出此请求的时间限制

当我在AD中searchLDAP用户时出现错误。 如果我限制DirectorySearcher.SizeLimit = 1,那么我得到的结果(返回1结果)。 但是,当我将SizeLimit增加到1以上(SizeLimit = 2)时,我得到“ 超出此请求的时间限制 ”错误。 请让我知道我怎样才能debugging这个错误,什么是可能的情况,因为我得到这个错误。

另外请注意,只有当我的DirectorySearcher.Filter有ID,姓名,电子邮件时才会出现错误。 如果我只是通过名称或ID或电子邮件单独search,我没有得到任何超时错误,我得到的结果。

筛选search“ID”,名称和电子邮件(这将引发超时错误):

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

筛选search“ID”(这效果很好)

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

谢谢

该查询不完整,并有一些冗余和不正确的信息。

我会指定objectCategory = person。 如果你这样做,你不需要objectClass = user,因为它包含在objectCategory = person中。

你可能想试试这个:

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

另请注意:

“…如果你有使用objectCategory和objectClass的select,build议使用objectCategory,这是因为objectCategory是单值和索引的,而objectClass是多值的,没有索引(除了Windows Server 2008和以上)使用objectCategoryfilter的查询将比使用objectClass的类似filter更有效率Windows Server 2008域控制器(及以上版本)有一个特殊的行为,可以将objectClass属性编入索引,如果所有的域控制器是Windows Server 2008,或者如果您在查询中指定Windows Server 2008域控制器。

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