特定のグループのすべてのユーザーをActive Directoryの特定のOUから取得したいと考えています。私のコードは私のグループ名はArya
で、OU名がある私はActive Dirctoryの特定のグループとOUからユーザーを取得します
foreach (SearchResultEntry entry in searchResponse.Entries)
で、この例外を取得し、クライアント側のタイムアウト制限が
を超過したため、操作が中止されました
例外がスローされます
TestOU
ただし、フィルタを書き込むときは
string searchFilter = "(&(objectCategory=user)"
すべてのOUのユーザーを元に戻してもらいたいと思います。
bool bMoreData = false; DirectoryEntry rootDSE = new DirectoryEntry("LDAP://" + domain); string[] attributes = { "samaccountname", "displayname", "name", "initials" }; System.Net.NetworkCredential credential = new System.Net.NetworkCredential(admin, password, "IP address"); LdapDirectoryIdentifier directoryIdentifier = new LdapDirectoryIdentifier("ip address"); //389 (unsecured LDAP) LdapConnection connection = new LdapConnection(directoryIdentifier, credential); connection.Bind(); string searchFilter = "(&(objectCategory=user)(memberOf=cn=Arya,ou=TestOU,dc=Maintenance,dc=org))"; SearchRequest request = new SearchRequest("DC=Maintenance,DC=org", searchFilter, System.DirectoryServices.Protocols.SearchScope.Base, attributes); // getCookie(); DirSyncRequestControl dirSyncRC = new DirSyncRequestControl(cookie, System.DirectoryServices.Protocols.DirectorySynchronizationOptions.IncrementalValues, Int32.MaxValue); request.Controls.Add(dirSyncRC); SearchResponse searchResponse = (SearchResponse)connection.SendRequest(request); foreach (SearchResultEntry entry in searchResponse.Entries)// Exception thrown here { Console.WriteLine("{0}:{1}", searchResponse.Entries.IndexOf(entry), entry.DistinguishedName); } foreach (DirectoryControl control in searchResponse.Controls) { if (control is DirSyncResponseControl) { DirSyncResponseControl dsrc = control as DirSyncResponseControl; cookie = dsrc.Cookie; bMoreData = dsrc.MoreData; break; } }
この非常に低いレベルのLDAPインターフェイスを使用している理由は何ですか? –
私はADサーバーと同期する必要があるローカルデータベースを持っています。これは、cookieを作成すると、次に変更されていないレコードをフェッチしません。私は上記の解決策を見つけ出し、それに動いた。フィルターを使ってこれを実現したい – user2690509