.NET如何决定联系哪个服务器获取AD信息?还是全都是本地的?

时间:2018-01-09 08:58:37

标签: .net dns active-directory

我们对这次电话有疑问:

// using System.DirectoryServices.AccountManagement

var ctx = new PrincipalContext(ContextType.Domain);
var user = UserPrincipal.FindByIdentity(ctx, username);

其中FindByIdentity有时会抛出LdapException声称AD无法访问。我们注意到flushdns(通常)临时解决问题(当它没有解决问题时,ping本地DNS服务器似乎可以解决问题)。

我想确切地弄清楚这个调用尝试做什么样的查找,以便准确缩小我们的问题。

FindByIdentity来电进行了哪些网络通话,以及它在哪里查找要联系的服务器?

1 个答案:

答案 0 :(得分:1)

它只是通过DNS查找您的域名并使用返回的第一个IP。

DNS返回域的所有域控制器的IP,但是交替返回它们的顺序。因此,如果您有一个退役的域控制器仍然显示在DNS中,那么只有当DNS在列表中首先返回该IP时,您才会遇到故障。

执行nslookup domain.com并检查返回的所有IP。您可以使用telnet客户端检查它们:telnet [IP] 389 - 空白屏幕表示成功,否则它会告诉您它失败。