Я пытаюсь выполнить постраничный поиск в Active Directory, используя System.DirectoryServices.Protocols.PageResultRequestControl
.
Я получаю результаты поиска в страницах, однако полученное мной searchResponse
НЕ имеет правильного TotalCount
для общего количества страниц.
Не поддерживается?Или я что-то здесь упускаю?
Это пример кода, который я использовал для реализации выше.Я использую System.DirectoryServices.Protocols
для запроса Active Directory.
Когда к номеру страницы добавляется PageResultRequestControl
, все отлично работает, кроме totalSize
.
Например, в этом коде
LdapConnection connection = new LdapConnection(ldapDirectoryIdentifier, credential);
SearchRequest sr = new SearchRequest("", "(displayName=*)", System.DirectoryServices.Protocols.SearchScope.Subtree, new[] { "displayName"});
PageResultRequestControl pr = new PageResultRequestControl(50);
SearchOptionsControl so = new SearchOptionsControl(SearchOption.DomainScope);
sr.Controls.Add(pr);
sr.Controls.Add(so);
SearchResponse searchResponse;
while (true)
{
searchResponse = (SearchResponse)connection.SendRequest(sr);
if (searchResponse.Controls.Length != 1 || !(searchResponse.Controls[0] is PageResultResponseControl))
{
totalPageCount = 0;
return null;
}
PageResultResponseControl pageResponse = (PageResultResponseControl)searchResponse.Controls[0];
totalPageCount = pageResponse.TotalCount;
if (pageResponse.Cookie.Length == 0)
{
break;
}
else
{
pageRequest.Cookie = pageResponse.Cookie;
}
}