2010-02-11 16 views
6

से प्रोग्रामेटिक रूप से जानकारी कैसे प्राप्त करें IIS7 पर एक एएसपी.Net पृष्ठ चला रहा हूं, और वीएस 2008 में विकसित हो रहा है। वर्तमान में, मेरे पास एलडीएपी कनेक्शन के माध्यम से उपयोगकर्ता प्रमाणीकरण किया जा रहा है। एक बार जब उपयोगकर्ता लॉग इन करता है, तो एक पृष्ठ पर उनके पास उनके बारे में कुछ बुनियादी जानकारी (जैसे उनका नाम, ईमेल पता, देश और इसी तरह) के साथ एक फॉर्म होता है और मैं इन क्षेत्रों में से कुछ को पहले से संग्रहीत जानकारी से पहले पॉप्युलेट करना चाहता हूं एलडीएपी। विशेष रूप से उनके दिए गए नाम और ईमेल पते। सवाल यह है कि, सी # का उपयोग करके, मैं वास्तव में इस जानकारी को कैसे प्राप्त करूं?एलडीएपी

उत्तर

8

लगता है जैसे आप नेट 3.5 एसपी 1 पर हैं, उस स्थिति में आप System.DirectoryServices.AccountManagement नामस्थान का उपयोग कर सकते हैं बहुत इसे सरल बनाता है।

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 आप हड़पने कर सकते हैं:

यहां एक नमूना है।

+1

धन्यवाद, हालांकि एक छोटा सवाल है। मैं इस बारे में अनिश्चित हूं कि आपके द्वारा 'mydomaincontroller' का उपयोग करने वाली स्ट्रिंग के लिए क्या उपयोग करना है। एलडीएपी प्रमाणीकरण वेब में ActiveDirectoryMembershipProvider का उपयोग कर किया गया है। कॉनफिग। संभवतः मुझे उपयोगकर्ता नाम और पासवर्ड के रूप में एलडीएपी यूआरएल प्रदान करना होगा। कब/कहाँ/यह कैसे किया जाता है? –

+3

@ जैकोब - मैं आम तौर पर विभिन्न डोमेन नियंत्रकों से जुड़ता हूं ... आप जो भी डोमेन नियंत्रक विंडोज चुनते हैं उसे पकड़ने के लिए 'var pc = new PrincipalContext (ContextType.Domain); * वैकल्पिक रूप से, आप कर सकते हैं 'var pc = new PrincipalContext (ContextType.Domain," my.server.com "," user "," pass "); 'यहां विकल्पों की पूरी सूची दी गई है: http://msdn.microsoft.com/en-us/ लाइब्रेरी/system.directoryservices.accountmanagement.principalcontext.principalcontext.aspx –

+0

धन्यवाद, ऐसा लगता है कि मैं वही चाहता था! –

संबंधित मुद्दे