我需要使用使用.NET / C#实现的Ldap搜索来获得所有“epersonstatus = REMOVE”员工的'employeenumber',如:
var connection = new LdapConnection("foo.bar.com:389");
connection.AuthType = AuthType.Anonymous;
connection.SessionOptions.ProtocolVersion = 3;
connection.Bind();
var request = new SearchRequest(
"dc=root,dc=com",
"(epersonstatus=REMOVE)",
SearchScope.Subtree,
new string[] { "employeenumber" });
由于有数以千计的条目我使用此处提议的分页请求: http://dunnry.com/blog/PagingInSystemDirectoryServicesProtocols.aspx
我还检查过服务器是否支持此处建议的分页请求: iPlanet LDAP and C# PageResultRequestControl
一旦流程到达:
SearchResponse response = connection.SendRequest(request) as SearchResponse;
我收到DirectoryOperationException,并显示消息“请求的属性不存在”。
通过在像softerra这样的LDap客户端上运行相同的查询,我得到条目(一千)和 错误。
非常感谢一些帮助。
答案 0 :(得分:2)
我有类似的问题。
使用分页搜索时,我收到异常"The server does not support the control. The control is critical."
,当使用非分页搜索时,我收到了结果(至少只要过滤器限制了最大数量)。
但是我发现错误信息有误导性 - 问题隐藏在身份验证中。
使用AuthType.Basic
(或AuthType.Anonymous
)我收到了错误消息。我一切换到AuthType.Ntlm
就行了。
希望这会有所帮助......