我们对这次电话有疑问:
// using System.DirectoryServices.AccountManagement
var ctx = new PrincipalContext(ContextType.Domain);
var user = UserPrincipal.FindByIdentity(ctx, username);
其中FindByIdentity
有时会抛出LdapException
声称AD无法访问。我们注意到flushdns
(通常)临时解决问题(当它没有解决问题时,ping本地DNS服务器似乎可以解决问题)。
我想确切地弄清楚这个调用尝试做什么样的查找,以便准确缩小我们的问题。
FindByIdentity
来电进行了哪些网络通话,以及它在哪里查找要联系的服务器?
答案 0 :(得分:1)
它只是通过DNS查找您的域名并使用返回的第一个IP。
DNS返回域的所有域控制器的IP,但是交替返回它们的顺序。因此,如果您有一个退役的域控制器仍然显示在DNS中,那么只有当DNS在列表中首先返回该IP时,您才会遇到故障。
执行nslookup domain.com
并检查返回的所有IP。您可以使用telnet客户端检查它们:telnet [IP] 389
- 空白屏幕表示成功,否则它会告诉您它失败。