DirectorySearcher не учитывает свойство SizeLimit, если SizeLimit 256 или более

Я использую 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, он вернет количество записей I, которое я укажу. Быстрый пример этого в действии в маленькой сети:

Если я скажу это, чтобы дать мне 255 записей, это даст мне 255 записей. Но если я скажу это, чтобы дать мне 256 или выше, он хочет дать мне все из них.

Есть идеи о том, что здесь происходит?

1 ответ

Решение

Проблема была в PageSize собственность на DirectorySearcher объект. Кажется, что размер страницы был ограничен, когда в качестве значения по умолчанию было установлено значение SizeLimit имущество. Я установил PageSize свойство до 4000 и любое значение, которое я положил в SizeLimit вытащил это точное число.

Другие вопросы по тегам