Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 403
Ocaso Protal Avatar asked Aug 08 '16 09:08

Ocaso Protal


1 Answers

unfortunately, It will never be updated after initiation, the only workaround you can do is to recheck with every iteration if you are still connected or not

like image 147
Hussein Khalil Avatar answered Nov 16 '22 09:11

Hussein Khalil