2012-12-20 24 views
9

Używam System.DirectoryServices.AccountManagement do zapewnienia funkcji wyszukiwania użytkownika.C# - Wyszukiwanie użytkowników w wielu domenach Active Directory

Firma ma kilka specyficznych regionów domen AD: AMR, EUR, Jap itp

następujące prace dla domeny EUR, ale nie zwraca użytkowników z innych domen (naturalnie):

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com"); 

var query = new UserPrincipal(GetContext()); 

query.Name = "*Bloggs*"; 

var users = new PrincipalSearcher(query).FindAll().ToList(); 

Jednakże, jeśli mogę kierować cały katalog, to nie zwraca użytkownikom dowolny z określonych dziedzin Region:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com"); 

Jak przeszukiwać cały katalog?

Aktualizacja

Poczytaj na ten temat: "Jak Active Directory poszukiwane praca":

http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx

Gdybym sufiks nazwy serwera z portu 3268 przeszukuje przeciwko Global katalogowy:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com"); 

Jest jednak bardzo, bardzo powolny. Wszelkie sugestie dotyczące poprawy wydajności?

+0

Wyliczyłem to. Odpisze odpowiedź, gdy SO mi pozwoli. –

+0

Czy możesz napisać, co zrobiłeś, aby to zadziałało? – FMFF

+0

Dodanie numeru portu do ciągu domeny i param kontenera sprawiło, że działał on dla mnie, dzięki – filip

Odpowiedz

0

Zapytania z początkowymi znakami wieloznacznymi (*Bloggs*) będą powolne, o ile nie masz indeksu krotkowego dla atrybutu będącego kwerendą. Żaden z atrybutów w AD nie ma tego domyślnie ustawionego. Lepiej nie robić początkowych symboli wieloznacznych.

Powiązane problemy