c# - 获取全局目录的 PrincipalContext 的连接服务器

标签 c# .net active-directory

我有一个返回 PrincipalServer 的方法 CreateContextForGlobalCatalog连接到全局目录:

PrincipalContext = new PrincipalContext(ContextType.Domain,
                                        "forest.name:3268", 
                                        "dc=forest,dc=name", 
                                        ContextOptions.Negotiate, 
                                        userName, password);

注意:这是该方法的缩减版本,通常名称和容器是参数。

在这种情况下,我循环遍历数据库中的对象以从 ActiveDirectory 中的全局目录中获取信息:

using (PrincipalContext principalContext = CreateContextForGlobalCatalog())
{
    foreach (ADAccount adAccount in accounts){
       Log.Debug("Connected server: " + principalContext.ConnectedServer);

    // get some information from AD here ...
    }
}

Log.Debug 行从 PrincipalContext 记录连接的服务器。我有一个仅包含虚拟机的测试设置。

我的问题:当我现在断开连接的服务器(禁用网络适配器)时,我没有得到异常并连接到新服务器,但日志消息仍然显示原始连接的服务器服务器不再可用。

有没有办法以某种方式刷新连接的服务器属性或从其他地方获取信息?

最佳答案

不幸的是,它在启动后永远不会更新,您唯一可以做的解决方法是在每次迭代时重新检查您是否仍然连接

关于c# - 获取全局目录的 PrincipalContext 的连接服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825673/

相关文章:

java - LDAP 搜索速度很慢

c# - StructureMap:具体类构造函数接受相同接口(interface)类型的多个参数

c# - List<T>.Sort 是否在排序列表上遇到最坏情况下的性能?

c# - 在 C# 中创建类对象

c# - .NET 导出到 excel - 不显示子行

java - 如何使用 Java 连接到 Active Directory

c# - 关闭一个OleDbConnection

c# - 如何在asp.net中提取jquery.ajax序列化表单参数

c# - 以下 LINQ 语句如何工作?

linux - Active Directory 和 linux nslcd 绑定(bind)而不扩展 AD 模式