我试图从Active Directory中每用户拉。我目前正在使用这种方法:LDAP搜索返回的对象数量比预期的少
DirectorySearcher search = new DirectorySearcher();
search.Filter = "(objectClass=user)";
foreach (SearchResult result in search.FindAll())
{
if(result.Properties["mail"].Count > 0 && result.Properties["displayName"].Count > 0)
{
emailAddresses.Add(new EmailDetails
{
EmailAddress = result.Properties["mail"][0].ToString(),
EmailDisplayName = result.Properties["displayName"][0].ToString()
});
}
}
这只是给我约3/4的名字我期待的givnig。这是一个让我出来....所以我就好奇,并增加了一个新的过滤器,看看我是否可以通过改变滤波器这个把自己拉:
search.Filter = "(&(objectClass=user)(sn=za*))";
这的确在拉我的正确,我基本上强迫它通过设置筛选器来搜索每个以za
开头的姓氏。但为什么我使用的第一个搜索过滤器并没有吸引所有的用户呢?
它返回了多少用户?你说3/4,但它是否返回一个确切的数字,如100,500,1000等?对于返回的结果可能存在服务器端限制。此外,由于您只查找具有'mail'和'displayName'的用户,为什么不将它们添加到ldap筛选器中呢?效率更高。 –
它正在返回644,从我已经读取的服务器端限制是1000 – Code