AD Query,Server无法运行

时间:2012-04-03 11:35:23

标签: c# active-directory directoryservices

所以,我有这个方法,在最后一行,它试图获得samAccountName,它给我一个让我疯狂的COM异常。

有什么想法吗?

public User FindUsername(string samAccountName, string groupDisplayName)   
        {
            using (DirectoryEntry searchRoot = new DirectoryEntry(ldapf, ldapu, ldapp))
            {
                using (DirectorySearcher searcher = new DirectorySearcher(searchRoot))
                {               
                    searcher.Asynchronous = false;
                    searcher.PropertiesToLoad.Add("SAMAccountName");
                    searcher.PropertiesToLoad.Add("displayName");
                    searcher.PropertiesToLoad.Add("uSNChanged");
                    searcher.PropertiesToLoad.Add("member");
                    searcher.PropertiesToLoad.Add("co");
                    searcher.PropertiesToLoad.Add("company");
                    searcher.PropertiesToLoad.Add("mail");


                    searcher.Filter = String.Format("(SAMAccountName={0})", samAccountName);
                    searcher.SearchScope = SearchScope.Subtree;
                    searcher.PageSize = 1000;

                    SearchResult result = searcher.FindOne();
                    ResultPropertyCollection resultPropColl = result.Properties;
                    Object memberColl = resultPropColl["member"];
                    using (DirectoryEntry memberEntry = new DirectoryEntry("LDAP://" + memberColl, ldapu, ldapp))
                    {
                        try
                        {
                            System.DirectoryServices.PropertyCollection userprops = memberEntry.Properties;
                            object obVal = userprops["SAMAccountName"].Value;

1 个答案:

答案 0 :(得分:0)

我注意到我的代码在其他地方工作时遇到了问题,我错过了一个foreach

foreach (Object memberColl in resultPropColl["member"])
                    {

显然如果它返回一个用户,resultPropColl [“member”]仍然是一个对象的集合?