AD ドメインと LDAP サーバーの 2 つの別々のソースからデータを収集しようとしています。
以下は私が使用しているコードです:
switch (dir)
{
case 0:
searchFilter = String.Format("(&(objectClass=user)(employeeID={0}))", lineData[34]);
attr = new string[] { "sn", "givenName", "l", "employeeid", "sAMAccountName" };
uid_ATTR = "sAMAccountName";
eid_ATTR = "EmployeeID";
dirName = "AD";
sr = new SearchRequest(adBaseDN, searchFilter, System.DirectoryServices.Protocols.SearchScope.Subtree, attr);
break;
case 1:
searchFilter = String.Format("(employeeNumber={0})", lineData[34]);
attr = new string[] { "sn", "givenName", "uid", "l", "employeeNumber" };
uid_ATTR = "uid";
eid_ATTR = "employeeNumber";
dirName = "LDAP";
sr = new SearchRequest(ldapBaseDN, searchFilter, System.DirectoryServices.Protocols.SearchScope.Subtree, attr);
break;
default:
WriteLog("Incorrect call to CompareDirectory(). Appropriate values are 0 or 1");
return;
}
try
{
if (dir == 0) { result = adConx.SendRequest(sr) as SearchResponse; }
else { result = ldapConx.SendRequest(sr) as SearchResponse; }
if (result != null)
{ .... etc.
LDAP 検索は非常に高速で、わずか数ミリ秒で結果が返されます。ただし、AD 検索は非常に遅く、結果を返すのに 5 ~ 11 秒かかります。
現時点では、これがフィルターの問題なのか、AD の問題なのかわかりません。Wireshark のクイック トレースは次のように表示され、タイムアウトのように見えます。
私はどんな提案にもオープンです。
前もって感謝します!
編集: LDAP 接続アドレスとして localhost:389 を使用して、ドメイン コントローラーでコードを直接実行することにより、これをさらに 1 ステップテストすることにしました。コードが応答を返すまでに、まだ約 8 ~ 10 秒かかります。これは実際には AD の問題であり、コードの問題ではない可能性があります。