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 вытащил это точное число.