我希望增强我编写的C#程序,以便它可以利用全局编录DC列表中的任何一个,如果其中一个或多个脱机。我想编写一个返回bool值的方法,具体取决于ADDS是否在目标服务器上运行(而不仅仅是服务器是否可ping):
public bool DC_is_Alive(string DomainControllerFQDN)
{
...
}
答案 0 :(得分:1)
您可以使用以下方法之一:
予。在服务器上创建DirectoryEntry到RootDSE分区,捕获COMException并检查错误代码
using (var entry = new DirectoryEntry("LDAP://serverFqdn/RootDSE")
{
entry.RefreshCache()
}
II。创建LdapConnection到服务器,调用Bind方法,捕获LdapException并检查错误代码
using (var connection = new LdapConnection...)
{
connection.Bind()
}
III。调用DomainController.GetDomainController方法,并捕获ActiveDirectoryObjectNotFoundException
var dc = DomainController.GetDomainController(new DirectoryContext...
P上。 S.根据我的经验,DomainController.GetDomainController可能会挂起,因此整个程序停止响应(它发生在1000 AD的1个AD环境中)。创建了一个方法版本,它异步调用DomainController.GetDomainController并在挂起时抛出TimeoutException