C#:如何使用DirectoryContext、域和DirectoryEntry类连接到启用SSL的Active Directory?
我想搜索林中的所有域,我采用以下方法进行搜索:C#:如何使用DirectoryContext、域和DirectoryEntry类连接到启用SSL的Active Directory?,c#,.net,active-directory,ldap,gabriel,C#,.net,Active Directory,Ldap,Gabriel,我想搜索林中的所有域,我采用以下方法进行搜索: foreach(Domain currDomain in Forest.GetCurrentForest().Domains) { try { DirectorySearcher searcher = new DirectorySearcher(currDomain.GetDirectoryEntry()); searcher.PageSize = 1
foreach(Domain currDomain in Forest.GetCurrentForest().Domains)
{
try
{
DirectorySearcher searcher = new
DirectorySearcher(currDomain.GetDirectoryEntry());
searcher.PageSize = 1000;
searcher.PropertiesToLoad.Add("cn");
searcher.PropertiesToLoad.Add("distinguishedName");
searcher.Filter = "(&(objectClass=group))";
using (SearchResultCollection resList = searcher.FindAll())
{
}
}
}
现在我想在启用SSL的情况下做同样的事情。为了做到这一点,我试图设置
AuthenticationType
目录条目中的属性
AuthenticationTypes.SecureSocketsLayer.
但是,当我尝试执行时,会抛出“发生操作错误”异常
有人能帮我一下吗?安全LDAP(LDAPS)在不同于常规LDAP(389)的端口(636)上侦听。你需要告诉它在那个端口上连接。试试这个:
DirectorySearcher searcher = new
DirectorySearcher(new DirectoryEntry("LDAP://" + currDomain.Name + ":636");
哇!我得到了这个工作的帮助,从的答案。最初,我在第一个答案的帮助下修改了下面给出的代码:
DirectoryEntry de = new DirectoryEntry("LDAP://" + currDomain.Name + ":636")
DirectorySearcher searcher = new DirectoySearcher(searcher);
但我还是得到了“发生了一个操作错误”。然后我发现,我还有以下代码:
de.AuthenticationType = AuthenticationTypes.SecureSocketLayer.
当我移除上面的线路时,它开始正常工作,我用WireShark确认了这一点