0

我正在使用PrincipalSearcherandDirectorySearcher来过滤用户并指定要获取的属性。在 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 或更高,它想给我所有这些。

在此处输入图像描述

关于这里发生了什么的任何想法?

4

1 回答 1

1

问题是对象的PageSize属性DirectorySearcher。当为属性设置非默认值时,页面大小似乎受到限制SizeLimit。我将该PageSize属性设置为 4000,并且我在 SizeLimit 中输入的任何值都提取了该确切数字。

于 2017-07-27T20:20:34.277 回答