Active Directory アカウントを検索すると、System.Runtime.InteropServices.COMException: この要求の時間制限を超えました

Active Directory アカウントを検索すると、System.Runtime.InteropServices.COMException: この要求の時間制限を超えました

AD で LDAP ユーザーを検索するとエラーが発生します。DirectorySearcher.SizeLimit = 1 に制限すると、結果 (1 件の結果が返されます) が返されます。ただし、SizeLimit を 1 より大きくすると (SizeLimit = 2 も)、次のエラーが発生します。このリクエストの期限が過ぎました」というエラーです。このエラーをデバッグするにはどうしたらよいか、またこのエラーが発生する原因として考えられるシナリオを教えてください。

また、このエラーは、DirectorySearcher.Filter に ID、名前、メールが含まれている場合にのみ発生することに注意してください。名前または ID またはメールのみで個別に検索している場合は、タイムアウト エラーは発生せず、結果が得られます。

ID、名前、メール アドレスを使用して検索「a」をフィルターします (タイムアウト エラーが発生します)。

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

ID で「a」を検索するためのフィルター (これはうまく機能します):

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

ありがとう

答え1

このクエリは適切に形成されておらず、冗長で誤った情報が含まれています。

私は objectCategory=person を指定します。そうすると、objectClass=user は objectCategory=person に含まれるため、必要ありません。

これを試してみるとよいでしょう:

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

また、次の点にも注意してください:

「...objectCategory と objectClass のどちらかを選択できる場合は、objectCategory を使用することをお勧めします。これは、objectCategory が単一の値を持ち、インデックスが付けられているのに対し、objectClass は複数の値を持ち、インデックスが付けられていないためです (Windows Server 2008 以降を除く)。objectCategory を使用したフィルターを使用するクエリは、objectClass を使用した同様のフィルターよりも効率的です。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

関連情報