与AD的LDAP连接非常慢,时序输出

时间:2013-08-20 14:43:53

标签: c# active-directory ldap

我正在尝试从两个不同的来源收集数据:AD域和LDAP服务器。

以下是我正在使用的代码:

            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跟踪显示以下内容,看起来像是超时:

Wireshark trace 我对任何建议都持开放态度。

提前致谢!

修改 我决定通过使用localhost:389作为LDAP连接地址直接在域控制器上运行代码来进一步测试这一步。代码仍然需要大约8-10秒才能返回响应。这实际上可能是AD问题,而不是代码问题。

1 个答案:

答案 0 :(得分:0)

这最终与Active Directory中设计非常糟糕的OU结构有关。