pageSize - для установки количества записей, возвращаемых в одном поисковом поиске.Постраничный поиск является основной вещью на уровне протокола LDAP.Это прозрачно для вас.Несмотря на то, что для параметра PageSize задано значение 2, DirectorySearcher будет возвращать все результаты за вас, но в вашем случае в двух пакетных ответных пакетах поиска.
Чтобы сделать то, что вы хотите, вместо этого вы должны использовать SizeLimit.Он будет контролировать, сколько записей возвращено всего.
Вот еще одна хитрая вещь.Windows Server имеет ограничение, установленное на стороне сервера.В каждом из результатов постраничного поиска он может возвращать не более 1000 записей.Итак, вам нужно быть осторожным, устанавливая PageSize и SizeLimit, если у вас есть результаты более 1000 записей.Если вы установите PageSize = 0 (означает неограниченное) и SizeLimit = 0 (означает неограниченное), вы получите сообщение об ошибке, поскольку сервер Windows не может вернуть вам более 1000 записей на одной странице.Если вы установите Pagesize = 800 и SizeLimit = 0 (что означает неограниченный), вы получите все свои результаты, и если вы посмотрите на сетевой анализатор, вы увидите, что есть куча результатов поиска LDAP.В каждом из результатов поиска по страницам вы видите 800 записей.
РЕДАКТИРОВАТЬ
Вот более подробный ответ на вопрос в вашем комментарии.
Хм, интересно.Пожалуйста, помогите мне лучше понять этот механизм: если в AD у меня есть 5000 строк, PageSize of DirectorySearcher установлен в 1000, SizeLimit установлен в 0, а максимальный лимит сервера равен 1000. Сколько вызовов directorySearcher.FindAll () мне нужно иметь вмой код, чтобы получить все 5000 результатов?5 или 1
Независимо от того, сколько записей будет возвращено, вам всегда нужен только один вызов в DirectorySearcher.DirectorySearcher позаботится обо всем остальном.Он объединит результаты поискового запроса и представит их в одном IEnumerable, хотя данные могут быть из разных ответных пакетов.Я предполагаю, что вы хотите установить PageLimit, потому что вы не хотите, чтобы все 5000 результатов возвращались одновременно и занимали вашу память.Не беспокойся об этом.DirectorySearcher не будет хранить все 5000 результатов в вашей памяти, пока вы не сохраните ссылку на каждый из возвращенных SearchResult.Он также не будет ждать, пока все ответные пакеты вернутся.Как только возвращается первый ответный пакет, FindAll () возвращает результат вам.Если ваша программа настолько быстра, что после обработки 1000 результатов второй пакет результатов поискового запроса все еще не прибыл.Вызов MoveNext () будет заблокирован и будет ждать получения второго пакета с поисковым запросом.