2012-04-20 5 views
8

के लिए समूह की सूची प्राप्त करें मैं समूह जो उपयोगकर्ता में है की सूची प्राप्त करना चाहते हैंदिया UserPrincipal

यह मेरा कोड है:।

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mydomain.ac.uk", "DC=mydomain,DC=AC,DC=UK", "user", "password"); 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "MyUser"); 

PrincipalSearchResult<Principal> results = user.GetGroups(); 

foreach(Principal p in results) 
{ 
    Response.Write(p.Name); 
} 

जब मैं चलाने के लिए, मुझे मिल गया निम्नलिखित लाइन Response.Write(p.Name);

System.Runtime.InteropServices.COMException: निर्दिष्ट निर्देशिका सेवा विशेषता या मान मौजूद नहीं है।

जब मैंने परिणामों की गिनती की जांच की, तो यह 9 लौटा और पहला समूह DomainUsers है।

मैं सूची में सभी 9 समूहों को कैसे पुन: सक्रिय कर सकता हूं? धन्यवाद।

निम्नलिखित उपयोगकर्ताओं की सूची है मैं:

enter image description here

+0

प्रिंसिपल कॉन्टेक्स्ट को कैसे प्रारंभ करें? – Damith

+0

प्रिंसिपल कॉन्टेक्स्ट सीटीएक्स = नया प्रिंसिपल कॉन्टेक्स्ट (ContextType.Domain, "mydomain.ac.uk", "डीसी = mydomain, डीसी = एसी, डीसी = यूके", "उपयोगकर्ता", "पासवर्ड"); – TTCG

+0

नाम विशेषता पॉप्युलेट नहीं हो सकती है (शायद क्योंकि यह आपके द्वारा पूछे गए किसी भी डोमेन से भिन्न डोमेन से था ??)। DisplayName या विशिष्ट नाम या SamAccountName या SID के लिए पूछने का प्रयास करें। – Ben

उत्तर

1

foreach(Principal p in results) 
{ 
    if (p is GroupPrincipal) 
     Response.Write(p.DisplayName); 
} 

की तरह कुछ मैं इसे गूंगा लगता है की कोशिश, लेकिन यह अतीत में मेरे लिए काम किया है। आपके परिणाम इस तरह दिखते हैं कि वास्तव में केवल 1 सुरक्षा समूह और 8 "अन्य" प्रकार के समूह पाए जाते हैं। उन "अन्य" समूहों में उन गुणों का अधिकार नहीं हो सकता है।

+0

मेरे लिए, नाम बेहतर था (DisplayName खाली था: 'user.GetGroups()। OfType ()। चुनें (p => p.Name));' –

5

PrincipalContext कक्षा में वर्णित के रूप जब LDAP कंटेनर संपत्ति को छोड़ते हुए, उपयोगकर्ता कोड चल दोनों डिफ़ॉल्ट User कंटेनर (अर्थात CN=Users,DC=yourDomain,DC=COM) और Computers कंटेनर (अर्थात CN=Computers,DC=yourDomain,DC=COM) करने के लिए अनुमति पढ़ा है चाहिए।

उपयोगकर्ता आवश्यक अनुमतियां नहीं है, तो आपको निम्न त्रुटि संदेश प्राप्त होगा:

निर्दिष्ट निर्देशिका सेवा विशेषता या मूल्य मौजूद नहीं है

  • 'context.Container' फेंक दिया प्रकार का एक अपवाद 'System.NullReferenceException' स्ट्रिंग {System.NullReferenceException}

  • ((नया System.Linq.SystemCo re_EnumerableDebugView (समूह))। आइटम [5])। विवरण System.Runtime.InteropServices.COMException 'स्ट्रिंग {System.Runtime.InteropServices.COMException}

' प्रकार का एक अपवाद फेंक दिया ' कृपया मेरे ब्लॉग पोस्ट Authentication Problems with PrincipalContext

+0

अगर कोई डोमेन में कंप्यूटर कंटेनर को हटा देता है प्रश्न, आपको यह त्रुटि भी मिल जाएगी। स्वर्ग के लिए ... किसी ने चीज़ को हटा दिया। –

+0

कोई भी 'this.RequestContext.Principal.IsInRole ("विज्ञापन समूह नाम") का उपयोग करने का प्रयास कर रहा है और यह हमेशा किसी भी अपवाद के बिना झूठी रिटर्न देता है, यह एक संभावित कारण है। सीएन और अनुमतियों को बहाल करने के लिए यह मेरे लिए तय किया गया है। –

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