Ao pesquisar a conta do Active Directory, System.Runtime.InteropServices.COMException: o limite de tempo para essa solicitação foi excedido

2

Estou recebendo um erro quando pesquiso usuários LDAP no AD. Se eu restringir o DirectorySearcher.SizeLimit = 1, então eu estou recebendo o resultado (1 resultado retornado). Mas quando eu aumentar o SizeLimit para mais de 1 (SizeLimit = 2 também), estou recebendo o erro " o limite de tempo para este pedido foi excedido ". Por favor, deixe-me saber como depurar esse erro e quais são os cenários possíveis, porque eu recebo esse erro.

Observe também que o erro ocorre apenas quando o meu DirectorySearcher.Filter tem ID, nome, e-mail. Se eu pesquisar apenas por nome, ID ou e-mail individualmente, não receberei nenhum erro de tempo limite e estou obtendo resultados.

Filtre por pesquisa "a" com ID, nome e amp; E-mail (isso gera um erro de tempo limite):

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

Filtre por pesquisa "a" com ID (isso funciona bem) :

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

Obrigado

    
por Varun Padival 05.09.2013 / 14:22

1 resposta

2

Essa consulta não é bem formada e tem algumas informações redundantes e incorretas.

Eu especificaria objectCategory = person. E se você fizer isso, você não precisa de objectClass = user, pois está incluído no objectCategory = person.

Você pode tentar isso:

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

Observe também:

"... se você tiver uma escolha entre usar objectCategory e objectClass, é recomendável usar objectCategory, porque objectCategory é de valor único e indexado, enquanto objectClass é multiuso e não indexado (exceto no Windows Server 2008. e acima.) Uma consulta usando um filtro com objectCategory será mais eficiente do que um filtro semelhante com objectClass.Os controladores de domínio do Windows Server 2008 (e acima) têm um comportamento especial que indexa o atributo objectClass.Você pode tirar proveito disso se todos os seus controladores de domínio são o Windows Server 2008 ou, se você especificar um controlador de domínio do Windows Server 2008 em sua consulta. "

link
< href="http://msdn.microsoft.com/pt-br/library/windows/desktop/ms677612%28v=vs.85%29.aspx"> link

    
por 05.09.2013 / 14:56

Tags