DirectorySearcherクラスを使用してアクティブディレクトリを照会しています。 1ページ(5000以上)のすべてのレコードを提供します。私は1ページあたり100レコードを取得したい。そこでSearchRequestクラスに移動しました。 SearchRequestクラスを使用すると、1ページあたり100レコードを取得できます。しかし、特定のクエリのためには動作していません。私は "samaccountname"または "a"で始まる表示名を持つすべてのユーザーをうまく動作させたい。それから、私はすべてのユーザーに "samaccountname"を付け、表示名は 'a'で始まります。これは動作しません。私はその理由を推測することができますが、ユーザーの中にはsamaccountnameをdisplaynameを持たないものから始めます。この問題の回避策はありますか?私System.DirectoryServices.Protocols.SearchRequest Ldapクエリ実行の問題
を案内してくださいあなたが本当にActive Directory内のdisplayNameをしたいですか次のコード
//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;
}
エラーは何ですか?フィルターはこれまで通り有効です。 –