如果 SizeLimit 为 256 或以上,DirectorySearcher 不遵守 SizeLimit 属性
DirectorySearcher doesn't respect the SizeLimit property if the SizeLimit is 256 or over
我正在使用 PrincipalSearcher
和 DirectorySearcher
来过滤用户并指定要获取的属性。在 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 的值,它将 return 我指定的记录数。它在小型网络上的快速示例:
如果我告诉它给我 255 条记录,它就会给我 255 条记录。但是如果我告诉它给我 256 或更高,它想要给我所有这些。
对这里发生的事情有什么想法吗?
问题是 DirectorySearcher
对象上的 PageSize
属性。当非默认值设置为 SizeLimit
属性 时,页面大小似乎受到限制。我将 PageSize
属性 设置为 4000,我在 SizeLimit 中输入的任何值都提取了那个确切的数字。
我正在使用 PrincipalSearcher
和 DirectorySearcher
来过滤用户并指定要获取的属性。在 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 的值,它将 return 我指定的记录数。它在小型网络上的快速示例:
如果我告诉它给我 255 条记录,它就会给我 255 条记录。但是如果我告诉它给我 256 或更高,它想要给我所有这些。
对这里发生的事情有什么想法吗?
问题是 DirectorySearcher
对象上的 PageSize
属性。当非默认值设置为 SizeLimit
属性 时,页面大小似乎受到限制。我将 PageSize
属性 设置为 4000,我在 SizeLimit 中输入的任何值都提取了那个确切的数字。