2011-04-06 6 views
5

मैं System.DirectoryServices.AccountManagement कक्षाओं का उपयोग करता है एक .NET 3.5 वेब अनुप्रयोग है। जब मैं कुछ उपयोगकर्ताओं की खोज करता हूं तो मुझे प्रिंसिपलऑपरेशन अपवाद मिलता है: सर्वर से एक रेफ़रल वापस कर दिया गया था। अगर मैंने अपने स्वयं के एलडीएपी कोड के साथ पुराना स्कूल तरीका किया है तो मैं रेफरल का पीछा करने में सक्षम हो सकता हूं। क्या मुझे अपना कोड फिर से लिखना है?क्या UserPrincipal.FindByIdentity() के लिए रेफ़रल पीछा करने का कोई तरीका है?

मेरे कोड इस तरह दिखता है:

using (var principalContext = new PrincipalContext(ContextType.Domain, null, adPath)) 
    { 

     // Find the principal object for which you wish to enumerate group 
     // membership. 
     using (var userPrincipal = UserPrincipal.FindByIdentity(principalContext, identity)) 
     { 
      if (userPrincipal != null) 
      { 
       Name = userPrincipal.DisplayName; 
       DistinguishedName = userPrincipal.DistinguishedName; 
       EmailAddress = userPrincipal.EmailAddress; 
       Sid = userPrincipal.Sid.Value; 
      } 
     } 
    } 

मेरे adPath 2 में से एक मान हो सकता है। मानों में से एक एक डोमेन है जो हाल ही में शामिल हो गया था, और विभिन्न उपकरणों का उपयोग करके इसका उपयोग किया जा सकता है। मेरा मानना ​​है कि यह एक समस्या है कि यह .NET लाइब्रेरी एलडीएपी कॉल कैसे करती है। के रूप में यह एक टिप्पणी के लिए बहुत लंबा है

+0

शायद आप अधिक टैग जोड़ सकते हैं [.net-3.5], [विंडोज़ सर्वर 2008], या [विंडोज़ सर्वर] कम से कम। – JPBlanc

उत्तर

1

यहाँ, एक आंशिक जवाब है।

this Microsoft documentation के अनुसार, जैसा कि आप जानते हैं, रेफ़रल एक संकेत है कि ग्राहक पीछा कर सकता है। लेकिन RODC के विषय में वे जोड़ें "उदाहरण के लिए, एक LDAP आवेदन के मामले में, अगर पीछा रेफरल ग्राहक और RODC के बीच LDAP कनेक्शन पर सक्षम है, आवेदन कभी नहीं जानता है कि ग्राहक RODC से एक रेफरल प्राप्त किया। ग्राहक रेफ़रल में निर्दिष्ट writable डोमेन नियंत्रक को स्वचालित रूप से रीडायरेक्ट किया जाता है। "।

तो मैं कैसे माइक्रोसॉफ्ट साइट में एक कनेक्शन और I found this जो ADSI उपयोग का मतलब है पर LDAP पीछा सक्षम करने के लिए लग रहे हो। मुझे जवाब में बहुत दिलचस्पी है।

आप इस तरह वैश्विक सूची क्वेरी करने के लिए कोशिश करते हैं:

/* Retreiving a principal context 
*/ 
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "YourGCServer:3268", "dc=dom,dc=fr", "User", "Password"); 

यह सब वन डोमेन के datas शामिल चाहिए था। मुझे उम्मीद है कि यह मदद करता है।

+0

यह बहुत उपयोगी नहीं है। मुझे पता है कि रेफरल्स कैसे काम करते हैं, और मुझे यह जानने की ज़रूरत है कि इस विशेष एपीआई के साथ रेफरल को कैसे बल दिया जाए। –

+0

मैं अपना एवर संपादित करता हूं। – JPBlanc

0

आप फार्म का कोड की कोशिश की है (में डोमेन डाल दूसरा तर्क के रूप में):

var principalContext = new PrincipalContext(ContextType.Domain, "office.local", "OU=Users, DC=office, DC=local")) 

भी सुनिश्चित करें कि adPath विशिष्ट कम से कम करने के लिए सबसे विशिष्ट से है।

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