我正在使用PrincipalSearcher
andDirectorySearcher
来过滤用户并指定要获取的属性。在 2 个不同的网络上对其进行测试。一个网络有 8K+ 记录,另一个网络有 135K+。在 135K+ 网络上,它无法将记录保存到数据库。所以我想用少数几条记录做一个测试,但在我试过的几百条记录上它并没有失败。所以我试着把它增加到一千。但是当我这样做时,它给了我一切,而不是我要求的一千。
以下是我的做法:
using (PrincipalSearcher searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
DirectorySearcher directorySearcher = searcher.GetUnderlyingSearcher() as DirectorySearcher;
directorySearcher.Filter = "(&(objectSid=*)(sn=*)(givenName=*)(objectGuid=*))";
directorySearcher.PropertiesToLoad.Add("ObjectGUID");
directorySearcher.PropertiesToLoad.Add("objectSid");
directorySearcher.PropertiesToLoad.Add("GivenName");
directorySearcher.PropertiesToLoad.Add("sn");
directorySearcher.PropertiesToLoad.Add("mail");
directorySearcher.PropertiesToLoad.Add("telephoneNumber");
directorySearcher.PropertiesToLoad.Add("sAMAccountName");
directorySearcher.PropertiesToLoad.Add("distinguishedName");
directorySearcher.PropertiesToLoad.Add("title");
directorySearcher.PropertiesToLoad.Add("department");
directorySearcher.PropertiesToLoad.Add("company");
directorySearcher.PropertiesToLoad.Add("manager");
directorySearcher.PropertiesToLoad.Add("PhysicalDeliveryOfficeName");
directorySearcher.PropertiesToLoad.Add("countryCode");
directorySearcher.SizeLimit = 255;
注意这里的大小限制是 255。如果我指定一个低于 256 的值,它将返回我指定的 I 记录数。在小型网络上运行的快速示例:
如果我告诉它给我 255 条记录,它给我 255 条记录。但如果我告诉它给我 256 或更高,它想给我所有这些。
关于这里发生了什么的任何想法?