C #, используя DirectoryVirtualListView для просмотра результатов запроса ldap - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь получить пользователей с сервера LDAP. Сервер ограничен 200 результатами на ответ, и я хочу, чтобы все пользователи были старше 5000. Поэтому мне нужно выполнить какую-то нумерацию страниц. до сих пор я пробовал два подхода:

  1. Установка свойства DirectorySearcher PageSize. При таком подходе создается исключение, которое гласит: «[DSA]: разбиение на страницы невозможно, когда требуется связывание (DSP)». Вот код
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://server.name");
rootEntry.Username = "cn=any,o=any,dc=any,dc=any";
rootEntry.Password = "thepassword";
rootEntry.AuthenticationType = AuthenticationTypes.FastBind; 
using (DirectorySearcher searcher = new DirectorySearcher(rootEntry))
{
    searcher.PageSize = 50;
    searcher.Filter = "(&(objectClass=person))";
    foreach (SearchResult sr in searcher.FindAll())
    {
        Console.WriteLine(sr.Path);
    }
}
  1. Использование VirtualListView. Это также вызывает исключение «Значение свойства VirtualListView не может быть установлено» и код:
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://server.name", "cn=any,o=any,dc=any,dc=any", "any", AuthenticationTypes.FastBind);
using (DirectorySearcher searcher = new DirectorySearcher(rootEntry))
{
    searcher.Filter = "(&(objectClass=person))";
    searcher.Sort = new SortOption("cn", SortDirection.Ascending);
    searcher.VirtualListView = new DirectoryVirtualListView(25);

    foreach (SearchResult sr in searcher.FindAll())
    {
        Console.WriteLine(sr.Path);
    }
}

Может кто-нибудь сказать мне, что я делаю не так? заранее спасибо.

...