Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#active directory如果域控制器关闭怎么办?_C#_Active Directory - Fatal编程技术网

C#active directory如果域控制器关闭怎么办?

C#active directory如果域控制器关闭怎么办?,c#,active-directory,C#,Active Directory,我有以下代码,用于检索特定用户所属的所有active directory组:- string[] output = null; using (var ctx = new PrincipalContext(ContextType.Domain, "???.???.uk")) using (var user = UserPrincipal.FindByIdentity(ctx, username)) { if (user != null) { o

我有以下代码,用于检索特定用户所属的所有active directory组:-

string[] output = null;

using (var ctx = new PrincipalContext(ContextType.Domain, "???.???.uk"))
using (var user = UserPrincipal.FindByIdentity(ctx, username))
{
    if (user != null)
    {
        output = user.GetGroups() //this returns a collection of principal objects                 .Select(x => x.SamAccountName) // select the name.  you may change this to choose the display name or whatever you want
            .ToArray(); // convert to string array
    }
}
我唯一的问题是当域控制器关闭时。我认为上面的代码只需查看其他控制器,直到找到一个启动的控制器。如何重写上述代码,以便在单个域控制器不可用时不会崩溃


谢谢

如果您想使用任何可用的域控制器,如果有,您可以使用域的名称而不是定义控制器

using (var ctx = new PrincipalContext(ContextType.Domain, "example.uk"))
您可以做的另一件事是获取所有域控制器的列表,并对它们进行筛选以获得第一个可用的控制器

Domain domain = Domain.GetCurrentDomain();
var allControllers = domain.DomainControllers;

一旦找到一个工作的控制器,就可以使用它来创建上下文

在断开以太网电缆的情况下运行代码时会发生什么?