我試圖從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