2012-12-20 16 views
9

Ich verwende das System.DirectoryServices.AccountManagement, um Benutzer-Suchfunktionalität bereitzustellen.C# - Suchen nach Benutzern über mehrere Active Directory-Domänen

Das Unternehmen hat mehrere regionsspezifische AD-Domänen: AMR, EUR, usw. JPN

Folgende Arbeiten für die EUR-Domäne, aber nicht zurück Benutzer von den anderen Domänen (natürlich):

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(); 

wenn ich jedoch das gesamte Verzeichnis Ziel, es nicht zurückgeben Benutzer von jede der Region bestimmten Domains:

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

Wie durchsuche ich das gesamte Verzeichnis?

aktualisieren

Informieren Sie sich über "Active Directory-Suche Work":

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

Wenn ich Suffix den Servernamen mit Port 3268 sucht er gegen den globalen Katalog:

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

Allerdings ist es sehr, sehr langsam. Irgendwelche Vorschläge zur Verbesserung der Leistung?

+0

Ich habe es herausgefunden. Wird antworten, wenn SO mich lässt. –

+0

Können Sie bitte posten, was Sie getan haben, damit das funktioniert? – FMFF

+0

Das Hinzufügen der Portnummer zum Domänenstring und Containerparameter hat es für mich funktioniert, danke – filip

Antwort

0

Abfragen mit anfänglichen Platzhaltern (*Bloggs*) sind langsam, es sei denn, Sie haben einen Tupelindex für das Attribut, das Abfragen enthält. Keines der Attribute in AD ist standardmäßig aktiviert. Besser, keine anfänglichen Platzhalter zu machen.

Verwandte Themen