Frage

Ich muß für alle Benutzer Suche nach einem bestimmten Textzeichenfolge in ihrem Namen gegen die Exchange Server Global Address List enthalten. Dieser Vorgang wird von einer ASP.NET-Anwendung ausgeführt werden. Beachten Sie, dass die GAL erforderlich ist (nicht Active Directory), wie es Benutzer über Domänen enthält. Es ist auch das, was der Kunde verlangt.

Ich habe geschaut, auf Exchange Web Services und Outlook Web Access-Methoden. Doch weder in meiner Organisation konfiguriert werden kann, so dass ich wissen müssen, welche Option ist die richtige bevor Infrastruktur zu fragen, es zu konfigurieren.

Exchange Web Services

Ich hoffte, dass die ResolveNames Methode in Exchange Web Services . Die Dokumentation für sie heißt es:

  

Active Directory wird zuerst durchsucht und dann die Kontaktordner des Benutzers gesucht.

Es scheint zu implizieren, dass diese Methode nur Benutzer aus der aktuellen Domäne zurück. Ist das richtig?

Outlook Web Access

Die andere Option fand ich war GALFind. Das sieht perfekt, aber diesem Artikel erklärte, dass es nicht unterstützt . Es wird in diesem Technet Artikel als nicht mehr verfügbar bestätigt.

Kann jemand bitte geben Ratschläge zu diesen oder anderen Optionen?

War es hilfreich?

Lösung

Es ist möglich, über mehrere Domains abfragen, indem die Abfrage aus dem Wald Wurzel beginnen. Hier ist der Code, den ich am Ende mit:

string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
var rootEntry = new DirectoryEntry("GC:");
foreach (DirectoryEntry entry in rootEntry.Children)
{
    DirectoryEntry forestEntry = entry;
    DirectorySearcher searcher = new DirectorySearcher
        {
            SearchRoot = forestEntry,
            Filter = filter,
            Sort =
                {
                    Direction = SortDirection.Ascending,
                    PropertyName = "cn"
                }
        };
    searcher.PropertiesToLoad.AddRange(ADProperties.Values.ToArray());
    SearchResultCollection results = searcher.FindAll();
    foreach (SearchResult result in results)
    {
        DirectoryEntry foundEntry = result.GetDirectoryEntry();

        // Do something
    }
}

Andere Tipps

Ich bin kein Exchange-Experte, aber nicht können Sie diese mit Collaboration Data Objects (CDO), obwohl es nicht könnte sein, zu schnell .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top