我正在使用DirectorySearcher类来查询活动目录。它在单个页面中提供所有记录(超过5000个)。我想每页获得100条记录。所以我转到了SearchRequest类。使用SearchRequest类,每页可以获得100条记录。但对于特定的查询,它不起作用。我想让所有的用户使用他们的“samaccountname或显示名称以'a'开头”“正常工作。然后,我想让所有用户使用他们的“samaccountname和显示名称以'a'开头”,这是行不通的。我可以猜出原因,其中一些用户在没有任何显示名称的情况下启动他们的samaccountname。有关此问题的任何解决方法?请指引我System.DirectoryServices.Protocols.SearchRequest Ldap查询执行问题
请参考Active Directory中的下列代码
//This query works fine
//string filter = "(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(|(samaccountname=a*)(displayname=a*)))";
/* Not works */
string filter = "(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(&(samaccountname=a*)(displayname=a*)))";
LdapConnection connection = new LdapConnection(serverName);
string[] attribs = { "samaccountname", "displayname" };
// create a SearchRequest object
SearchRequest searchRequest = new SearchRequest
(scope,
filter,
System.DirectoryServices.Protocols.SearchScope.Subtree,
attribs);
SortRequestControl sortRequest = new SortRequestControl("samaccountname", false);
searchRequest.Controls.Add(sortRequest);
VlvRequestControl vlvRequest =
new VlvRequestControl(0, numEntries, offsetVal);
searchRequest.Controls.Add(vlvRequest);
SearchResponse searchResponse =
(SearchResponse)connection.SendRequest(searchRequest);
if (searchResponse.Controls.Length != 2 ||
!(searchResponse.Controls[0] is SortResponseControl))
{
Console.WriteLine("The server does not support VLV");
return null;
}
什么是错误?据我所知,该过滤器是有效的。 – 2012-02-10 17:06:08