【发布时间】:2019-10-25 11:00:46
【问题描述】:
我正在尝试从 LDAP 服务器获取用户。服务器限制为每个响应 200 个结果,我想获取所有超过 5000 的用户。所以我需要进行某种分页。到目前为止,我已经尝试了两种方法:
- 设置 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);
}
}
- 使用 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);
}
}
谁能告诉我我做错了什么?提前致谢。
【问题讨论】:
标签: c# ldap directoryservices