简体   繁体   中英

Get the connected server of a PrincipalContext for global catalog

I have a method CreateContextForGlobalCatalog that returns a PrincipalServer that connects to a global catalog:

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

Note: That is a reduced version of the method, normally the name and the container are parameters.

With this context I'm looping over objects from the database to get information from the global catalog in ActiveDirectory:

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

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

The Log.Debug line logs the connected server from the PrincipalContext. I have a test setup containing only virtual machines.

My Problem: When I now disconnect that connected server (disable network adapter) I don't get an exception and get connected to a new server but the log messages still shows the original connected server albeit the server is not available anymore.

Is there a way to somehow refresh the connected server property or to get the information from somewhere else?

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

最简单的解决方案可能是尝试使用.Net的Ping类ping远程服务器。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM