Laden...

Active Directory User Information auslesen | LDAP | ASP.NET | SharePoint2010 | Visual Webpart

Erstellt von Birne vor 12 Jahren Letzter Beitrag vor 12 Jahren 7.943 Views
B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 12 Jahren
Active Directory User Information auslesen | LDAP | ASP.NET | SharePoint2010 | Visual Webpart

Hallo Community,

ich versuche derweil aus einem** AD Informationen** zu einem User auszulesen (Email Adresse, Vorname und Co.)

Dazu bin ich bisher wie folgt vorgegangen:


            string filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", "DerEntsprechendeUserName");
            string domain = "DieADDomain";

            System.DirectoryServices.DirectoryEntry adRoot = new System.DirectoryServices.DirectoryEntry("LDAP://" + domain, null, null, AuthenticationTypes.Secure);
            System.DirectoryServices.DirectorySearcher searcher = new System.DirectoryServices.DirectorySearcher(adRoot);
            searcher.SearchScope = SearchScope.Subtree;
            searcher.ReferralChasing = ReferralChasingOption.All;
            searcher.Filter = filter;

            SearchResult result = searcher.FindOne();
            System.DirectoryServices.DirectoryEntry directoryEntry = result.GetDirectoryEntry();

             string displayName = directoryEntry.Properties["displayName"][0].ToString();
             string firstName = directoryEntry.Properties["givenName"][0].ToString();
             string lastName = directoryEntry.Properties["sn"][0].ToString();
             string email = directoryEntry.Properties["mail"][0].ToString();

Beim auslesen der Properties bekomme ich allerdings stets die folgende Exception:> Fehlermeldung:

COMException: Unbekannter Fehler (0x8000500c)

Beim Debuggen ist mir auch aufgefallen das ich für den directoryEntry keine Schema Informationen abrufen, ebenfalls eine Exception vom Typ 'System.Runtime.InteropServices.COMException' geworfen bekomme.

Hat von euch jemand Rat wie ich erfolgreich zu meinem Ziel gelange und die spezifischen Informationen zu einem spefifischen User aus dem Active Directory auslesen kann ?

Vielen Dank schonmal

  • Birne -
K
79 Beiträge seit 2006
vor 12 Jahren

Hallo Birne,

nur so eine Idee:

Eventuell hast du keine ausreichende Berechtigungen um die Daten auszulesen. Bei unserer Domain funktioniert der Code von dir soweit in einer Konsolenanwendung. (Copy & Paste)

16.807 Beiträge seit 2008
vor 12 Jahren

Andere, elegantere Variante, sofern Rechte für das Lesen existieren:


PrincipalContext domainContext = new PrincipalContext( ContextType.Domain, "domain.name" );
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity( domainContext, IdentityType.SamAccountName, "samAccountName" );

string displayName = userPrincipal.DisplayName;

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo Birne,

im Normalfall hängt der SharePoint-Server am ActiveDirectory. D.h. du solltest problemlos übers SharePoint-Objektmodell (Also Microsoft.SharePoint) Benutzerinformationen auslesen können. Aus meiner Sicht brauchst du da kein DirectoryEntry.