Почему мой параметр PageSize DirectorySearcher меньше числа пользователей AD, но все равно возвращает всех пользователейC#

Место общения программистов C#
Ответить
Anonymous
 Почему мой параметр PageSize DirectorySearcher меньше числа пользователей AD, но все равно возвращает всех пользователей

Сообщение Anonymous »

Я просматривал документацию Microsoft и сообщения здесь о получении результатов поиска от DirectorySearcher. Я не уверен, как получить много результатов из AD (сейчас я тестирую 4000 результатов, но нужно масштабироваться для большего количества).Я не устанавливал размер страницы, который возвращает 2000 (кажется, это значение по умолчанию на моем сервере Active Directory, а не 1000, которое я читал из сообщений/документации). Я не знаю, как получить остальные результаты. Я пробовал несколько раз вызывать Dispose(), а затем FindAll(). Это не сработало (мне давались одни и те же результаты снова и снова).
Как мне получить все
результаты таким образом?
Выполнение 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);
Результаты:

Код: Выделить всё

PageSize=0
SizeLimit=0
AD Count: 2000
Затем я устанавливаю размер страницы выше, чем мои результаты (хотя я действительно не хочу этого делать из-за опасений по поводу производительности). Я получил все ожидаемые результаты.
Запуск 2:

Код: Выделить всё

ds.PageSize = 5000;
log.Debug("PageSize=" + ds.PageSize);
log.Debug("SizeLimit=" + ds.SizeLimit);
results = ds.FindAll();
log.Debug("AD count: " + results.Count);
Результаты:

Код: Выделить всё

PageSize=5000
SizeLimit=0
AD Count: 4066
Затем я установил размер страницы ниже, чем мои результаты, чтобы не влиять на производительность. Установка этого параметра, возможно, позволит разрешить «нумерацию страниц» результатов путем вызова 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);
Результаты:

Код: Выделить всё

PageSize=2000
SizeLimit=0
AD Count: 4066
Для меня это не имеет смысла. Я думал, что последующие вызовы Dispose() и FindAll() здесь будут работать. Но я получил все результаты с первого раза.

Подробнее здесь: https://stackoverflow.com/questions/257 ... f-ad-users
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»