首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectorySearcher FindOne()初始执行延迟

DirectorySearcher FindOne()初始执行延迟
EN

Stack Overflow用户
提问于 2012-11-16 05:58:29
回答 1查看 3.3K关注 0票数 6

我看到在我执行LDAP FindOne()和我看到的第一个发往DirectorySearcher服务器的网络数据包之间有2-5秒的初始延迟。初始执行后,后续执行将立即完成,持续时间约为45秒。在这段快速执行之后,下一次执行将被延迟,并且所有后续执行将立即完成。似乎有某种缓存正在进行,但我还没有找到任何资源来证实这一点,或者描述是什么导致了最初的延迟。

我们在客户端Windows 2008服务器上注意到了这一点,然后在我们自己的Windows 2008和Windows 7机器上重现了这一点。

这是我的简单的.NET 4.0 C#应用程序的样子。延迟发生在“已启动”和“已完成”消息之间。

你知道为什么在最初的FindOne()执行时会出现这种延迟吗?任何帮助都是非常感谢的!

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Text;

using System.DirectoryServices;

namespace LdapTest
{
class Program
{
    static void Main(string[] args)
    {
        string[] fetchAttributes;
        fetchAttributes = new string[] { "{string[0]}" };

        using (DirectoryEntry searchRoot = new DirectoryEntry("LDAP://localserver/ou=lab,dc=ourdomain,dc=com", "cn=binduser,ou=Services,dc=ourdomain,dc=com", "Password", AuthenticationTypes.ReadonlyServer))
        {
            using (DirectorySearcher searcher = new DirectorySearcher(searchRoot, "(sAMAccountName=UserName)", fetchAttributes, SearchScope.Subtree))
            {
                Console.WriteLine("Started");
                SearchResult result = searcher.FindOne();
                Console.WriteLine("Finished");
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 22:24:36

根据LDAP ADsPath MSDN article,如果绑定的LDAP路径指向服务器,则应该指定ServerBind标志,以避免不必要的网络流量。它还建议提供服务器的完整DNS名称。此外,当指向服务器时,ReadonlyServer标志没有任何意义。因此,我的第一个建议是将ReadonlyServer标志替换为ServerBind (最好给出完整的DNS名称),或者删除字符串中的服务器部分(在您的示例中,将其设置为LDAP://ou=lab,dc=ourdomain,dc=com或LDAP://ourdomain.com/ou=lab,dc=ourdomain,dc=com)。

需要注意的另一件事是,您正在按可分辨名称提供用户名。如果查看DirectoryEntry使用的核心IADsOpenDSObject::OpenDSObject,就会发现它要求lpReserved标志DirectoryEntry中的AuthenticationTypes参数为零None,或者在为用户名传递可分辨名称时包含ADS_USE_SSL SecureSocketsLayer标志。注意,SecureSocketsLayer标志要求Active Directory要求先安装证书服务器,然后才能使用此标志。您可能希望以不同的格式传递用户名。

最后,this MDSN page说,在没有任何身份验证标志的情况下,用户名和密码是明文发送的。您应该添加Secure标志。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13406955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档