调用Active Directory FindAll()时出现System.AccessViolationException

时间:2012-05-15 11:17:27

标签: active-directory access-violation directoryservices findall

我在C#.Net 4中有一段简单的代码,在System.DirectoryServices中的DirectorySearcher上调用.FindAll()时会随机发出访问冲突

该方法所做的就是找出用户是否在Active Directory中加载并返回 目录录入。

我搜索过网络,可以在SharePoint博客和论坛中找到多个异常提及,但没有一个来自普通的C#.net 4服务。

我的问题是我的服务会发生同样的访问,因此我需要使用相同的修补程序来解决我的问题吗?

此修补程序: http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/4634f4f4-7857-4de3-9bc5-fcbb946bd8df

代码:

            deSearch.Filter = String.Format("(&(SAMAccountName={0}))", userName);

            using (SearchResultCollection results = deSearch.FindAll())
            {
                if (results.Count > 0)
                {
                    de = results[0].GetDirectoryEntry();
                    return de;
                }
                else
                    return null;
            }

例外:

System.AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。 在System.DirectoryServices.Interop.UnsafeNativeMethods.IntADsOpen.GetObject(String className,String relativeName) at System.DirectoryServices.DirectoryEntries.Find(String name,String schemaClassName) 在System.DirectoryServices.DirectoryEntries.Find(String name)

0 个答案:

没有答案