快速查询Active Directory

时间:2011-05-25 21:12:06

标签: c# .net 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();

    .....
}

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

1 个答案:

答案 0 :(得分:5)

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

(|(objectSid=sid1)(objectSid=sid2)(...)(objectSid=sidn))

如果你有.NET 3.5或更高版本,那么你可以work with principals

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