快速查询Active Directory

pdi*_*ddy 4 .net c# active-directory

假设我有一个SID列表.

目前我正在查询每个SID的AD.就像是

foreach(string sidString in listOfSid)
{
    DirectorySearcher search = new ....

    search.Filter = string.Format("(objectSid={0})", ConvertToOctetString(sidString));

    var result = search.FindOne();

    .....
}
Run Code Online (Sandbox Code Playgroud)

有比这更快的方法吗?而不是循环是否有一种方法来一次查询所有信息而不是循环?

JPB*_*anc 5

我不确定我理解你的问题,但为什么不在循环中构建过滤器然后搜索一次.过滤器看起来像:

(|(objectSid=sid1)(objectSid=sid2)(...)(objectSid=sidn))
Run Code Online (Sandbox Code Playgroud)

如果你有.NET 3.5或更高版本,那么你可以使用校长.

根据Active Directory搜索的工作原理,服务器尝试处理的最大LDAP请求大小为10485760字节.如果服务器收到大于此值的请求,则会关闭连接.话虽如此,我从未测试过它.