导演弓箭手页面大小的混乱
本文关键字:混乱 弓箭手 导演 | 更新日期: 2023-09-27 18:21:08
我一直在查看微软的文档和这里关于从DirectorySearcher获取搜索结果的帖子。我正在编写代码,不确定从AD中获得大量结果的最佳执行方式(目前正在测试4K结果,但应该扩展到更多)。
问题1:什么是最好的方法?
以下是我迄今为止的努力。
运行1说明我没有设置返回2000的PageSize(这似乎是AD服务器上的默认值,而不是我从帖子/文档中读取的1000)。我不知道如何得到剩余的结果。我试着多次拨打Dispose()
和FindAll()
的电话。这并没有奏效(一次又一次地给了我同样的结果)。
问题2:如何以这种方式获得所有结果?
运行1:
//ds.PageSize - not setting this property
log.Debug("PageSize=" + ds.PageSize);
log.Debug("SizeLimit=" + ds.SizeLimit);
results = ds.FindAll();
log.Debug("AD count: " + results.Count);
运行1日志
PageSize=0
SizeLimit=0
AD Count: 2000
运行2说明我把PageSize做得比我的结果高(尽管我真的不想这样做是因为担心性能)。我得到了预期的所有结果。
运行2:
ds.PageSize = 5000;
log.Debug("PageSize=" + ds.PageSize);
log.Debug("SizeLimit=" + ds.SizeLimit);
results = ds.FindAll();
log.Debug("AD count: " + results.Count);
运行2日志
PageSize=5000
SizeLimit=0
AD Count: 4066
运行3说明为了不影响性能,我将PageSize设置为低于我的结果,我认为将其设置为可能会通过调用Dispose()
和FindAll()
来允许对结果进行"分页"。完全得到了意想不到的结果!
运行3:
ds.PageSize = 2000;
log.Debug("PageSize=" + ds.PageSize);
log.Debug("SizeLimit=" + ds.SizeLimit);
results = ds.FindAll();
log.Debug("AD count: " + results.Count);
运行3日志:
PageSize=2000
SizeLimit=0
AD Count: 4066
问题3:这对我来说毫无意义。请给我指正确的方向。我认为随后对Dispose()
和FindAll()
的调用会在这里工作。但我第一次就得到了所有的结果。
万分感谢!
该值可能已在您的环境中更改-默认情况下为1000。您可以将Page Size设置为1000,DirectorySearcher
类将为您处理分页。如果你把它设置得更小,那也没关系。您应该将代码封装在using
块中,以确保资源得到释放。