Ich habe einige Probleme mit Code, der einen Benutzer in Active Directory durch Suche nach ihrer E-Mail-Adresse suchen soll. Ich habe 2 Methoden ausprobiert, aber manchmal finde ich, dass die FindOne() Methode bei manchen Gelegenheiten keine Ergebnisse liefert. Wenn ich den Benutzer in der GAL in Outlook nachschaue, sehe ich die SMTP-E-Mail-Adresse aufgelistet.Korrekte Methode für die Suche nach AD-Benutzer nach E-Mail-Adresse von .NET
Mein Endziel ist zu bestätigen, dass der Benutzer in AD vorhanden ist. Ich habe nur die E-Mail-Adresse als Suchkriterien, also keine Möglichkeit, den Vor- oder Nachnamen zu verwenden.
Methode 1: Verwenden Mail Eigenschaft:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Methode 2: Proxyaddresses Eigenschaft:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Ich habe versucht, den Fall der E-Mail-Adresseingabe zu ändern, aber es zurückkehrt, noch keine Ergebnis. Gibt es hier ein Problem mit der Groß-/Kleinschreibung? Wenn ja, wie kann man das am besten lösen?
Ich denke, ich habe das Problem gefunden. Der DirectoryEntry.Path wurde auf eine bestimmte Domäne beschränkt. Ich habe den Code geändert, um den globalen Katalog zu verwenden, und die Suche funktioniert. Ich werde zurückkommen und bald updaten. Antworten auf Mail vs. ProxyAddresses sind willkommen, wenn jemand etwas hinzuzufügen hat. –