Ich habe eine Methode CreateContextForGlobalCatalog
, die ein PrincipalServer zurückzugibt, die zu einem globalen Katalog verbindet:Holen Sie sich den angeschlossenen Server eines Principal für globalen Katalog
PrincipalContext = new PrincipalContext(ContextType.Domain,
"forest.name:3268",
"dc=forest,dc=name",
ContextOptions.Negotiate,
userName, password);
Hinweis: Das ist eine verkleinerte Version des Verfahrens, in der Regel der Name und der Container sind Parameter.
Mit diesem Kontext ich über Objekte aus der Datenbank bin Looping Informationen aus dem globalen Katalog in ActiveDirectory- zu erhalten:
using (PrincipalContext principalContext = CreateContextForGlobalCatalog())
{
foreach (ADAccount adAccount in accounts){
Log.Debug("Connected server: " + principalContext.ConnectedServer);
// get some information from AD here ...
}
}
Die Log.Debug
Leitung meldet den angeschlossenen Server aus der Principal. Ich habe ein Test-Setup, das nur virtuelle Maschinen enthält.
Mein Problem: Wenn ich jetzt diesen verbundenen Server trennen (Netzwerkadapter deaktivieren) bekomme ich keine Ausnahme und werde mit einem neuen Server verbunden, aber die Protokollmeldungen zeigt immer noch den ursprünglichen verbundenen Server, obwohl der Server nicht ist verfügbar mehr.
Gibt es eine Möglichkeit, die Eigenschaft des verbundenen Servers irgendwie zu aktualisieren oder die Informationen von woanders zu bekommen?
Offensichtlich müssen Sie Ihren eigenen * ChangeTracker implementieren * Schauen Sie [hier] (http://stackoverflow.com/a/2002763/4558029) und sehen Sie, ob dies hilft – lokusking
Sie könnten einfach überprüfen, ob Ihr Netzwerk verbunden ist ? wie folgt: System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() –
@lokusking Haha, tatsächlich mache ich viel mit Änderungsbenachrichtigungen und sie sind wirklich eine Lösung für das zugrunde liegende Problem der Synchronisierung von Objekten. Aber diesmal möchte ich nur den neuen 'ConnectedServer' bekommen. –