Mik*_*uno 5 c# active-directory
我想增强我正在编写的 C# 程序,以便在其中一个或多个离线时它可以利用全局目录 DC 列表中的任何一个。我想编写一个方法,根据 ADDS 是否在目标服务器上运行(而不仅仅是服务器是否可 ping 通)来返回 bool 值:
public bool DC_is_Alive(string DomainControllerFQDN)
{
...
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法之一:
I. 在服务器上创建RootDSE分区的DirectoryEntry,捕获COMException并检查错误代码
using (var entry = new DirectoryEntry("LDAP://serverFqdn/RootDSE"))
{
entry.RefreshCache();
}
Run Code Online (Sandbox Code Playgroud)
二. 创建到服务器的LdapConnection,调用Bind方法,捕获LdapException并检查错误代码
using (var connection = new LdapConnection...)
{
connection.Bind();
}
Run Code Online (Sandbox Code Playgroud)
三.调用 DomainController.GetDomainController 方法,并捕获 ActiveDirectoryObjectNotFoundException
var dc = DomainController.GetDomainController(new DirectoryContext...);
Run Code Online (Sandbox Code Playgroud)
PS 根据我的经验,DomainController.GetDomainController 可能会挂起,因此整个程序停止响应(这种情况发生在 1000 个 AD 环境中的 1 个)。创建了一个方法版本,该方法异步调用 DomainController.GetDomainController 并在挂起时抛出 TimeoutException
| 归档时间: |
|
| 查看次数: |
4766 次 |
| 最近记录: |