2010-02-11 12 views
6

Sto eseguendo una pagina ASP.Net su IIS7 e lo sviluppo in VS 2008. Attualmente, l'autenticazione dell'utente viene eseguita tramite una connessione LDAP. Una volta che l'utente effettua l'accesso, in una pagina ha un modulo con alcune informazioni di base (come nome, indirizzo e-mail, paese e simili) e desidero pre-compilare alcuni di questi campi da informazioni già memorizzate nel LDAP. In particolare il nome e gli indirizzi e-mail indicati. La domanda è, usando C#, come posso effettivamente recuperare queste informazioni?Come recuperare informazioni a livello di programmazione da LDAP

risposta

8

Sembra che tu sia su .Net 3.5 SP1, in tal caso è possibile utilizzare lo spazio dei nomi System.DirectoryServices.AccountManagement che notevolmente semplifica questo.

Ecco un esempio:

var pc = new PrincipalContext(ContextType.Domain, "mydomaincontroller"); 
var u = UserPrincipal.FindByIdentity(pn, userName); 
var email = u.EmailAddress; 
var name = u.DisplayName; 

Here's a full list of properties si può afferrare.

+1

Grazie, una piccola domanda però. Non sono sicuro di cosa usare per la stringa per cui hai usato "mydomaincontroller". L'autenticazione ldap è stata eseguita utilizzando ActiveDirectoryMembershipProvider in Web.Config. Presumibilmente, dovrei fornire l'URL LDAP purché un nome utente e una password. Quando/Dove/Come è fatto? –

+3

@Jacob - Normalmente mi collego a una varietà di controller di dominio ... puoi anche solo fare 'var pc = new PrincipalContext (ContextType.Domain);' per afferrare qualsiasi scelta di windows controller del controller o ... in alternativa, puoi fare 'var pc = new PrincipalContext (ContextType.Domain," my.server.com "," user "," pass ");' Ecco un elenco completo di opzioni: http://msdn.microsoft.com/en-us/ library/system.directoryservices.accountmanagement.principalcontext.principalcontext.aspx –

+0

Grazie, questo sembra essere proprio quello che volevo! –

Problemi correlati