C# 使用PrincipalContext时如何检查与服务器的连接?

C# 使用PrincipalContext时如何检查与服务器的连接?,c#,asp.net,server,principalcontext,C#,Asp.net,Server,Principalcontext,我需要在连接到同一网络的计算机中更改windows用户的密码。为此,我使用PrincipalContextmethod连接机器,然后获取指定的用户,最后更改密码 private bool ChangeUserPassword(string serverName,string serverip,string adminUserName, string adminUserPassword, string userName, string newIISPassword) {

我需要在连接到同一网络的计算机中更改windows用户的密码。为此,我使用PrincipalContextmethod连接机器,然后获取指定的用户,最后更改密码

 private bool ChangeUserPassword(string serverName,string serverip,string adminUserName, string adminUserPassword, string userName, string newIISPassword)
    {                                   
            using (var context = new PrincipalContext(ContextType.Machine, serverName, adminUserName, adminUserPassword))                
            using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
            {
                user.SetPassword(newIISPassword);
                user.Save();
            }
}
问题是,有时当我提供“ServerName”时,我无法连接到服务器,而是使用“ServerIp”,反之亦然。 如果已连接,则context.ConnectedServer将显示服务器名称,如果未连接,则显示未知路径或错误用户名错误

如果未建立连接,我可以使用serverIp作为参数

 using (var context = new PrincipalContext(ContextType.Machine, serverIp, adminUserName, adminUserPassword))  
为此,我尝试了if context.ConnectedServer!=serverName知道连接不工作,并将上述代码放入其中。但由于没有ConnectedServer,它将返回错误


如何检查与服务器的连接是否已建立?

您的DNS服务器可能未在网络上完全配置。请使用计算机名称的FQDN


我正在为一个客户开发这个应用程序。我不能强迫他们在他们的网络上做这个改变。因此,在代码级别找到解决方案是我目前唯一的选择。我不是说要在他们的网络上进行更改。我只是说他们应该输入/使用计算机的全名。