Я просматривал документацию 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);
Результаты:
Затем я устанавливаю размер страницы выше, чем мои результаты (хотя я действительно не хочу этого делать из-за опасений по поводу производительности). Я получил все ожидаемые результаты.
Запуск 2:
Код: Выделить всё
ds.PageSize = 5000;
log.Debug("PageSize=" + ds.PageSize);
log.Debug("SizeLimit=" + ds.SizeLimit);
results = ds.FindAll();
log.Debug("AD count: " + results.Count);
Результаты:
Затем я установил размер страницы ниже, чем мои результаты, чтобы не влиять на производительность. Установка этого параметра, возможно, позволит разрешить «нумерацию страниц» результатов путем вызова 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);
Результаты:
Для меня это не имеет смысла. Я думал, что последующие вызовы Dispose() и FindAll() здесь будут работать. Но я получил все результаты с первого раза.
Подробнее здесь:
https://stackoverflow.com/questions/257 ... f-ad-users