我安装了一台安装了Windows Server 2012的虚拟机,并在其上安装了AD服务器。我尝试在VM中使用代码并且它可以正常工作但是当我在主机上尝试相同的代码时它就无法工作。
这是我的代码:
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "tryad.com");
if (principalContext != null)
{
UserPrincipal userP = UserPrincipal.FindByIdentity(principalContext, "sky@tryad.com");
if (userP != null)
{
if (principalContext.ValidateCredentials("sky@tryad.com", "!QAZ2wsx"))
{
userP.ChangePassword("!QAZ2wsx", "#EDC4rfv");
userP.Save();
if (principalContext.ValidateCredentials("sky@tryad.com", "#EDC4rfv"))
{
MessageBox.Show("Success.");
}
}
}
}
在我的虚拟机中,它工作正常。但是在我的主持人中,它会在UserPrincipal.FindByIdentity(principalContext, "sky@tryad.com");
处出现异常
消息是:
用户帐户或密码不正确。
唯一的区别是我在VM中使用"tryad.com"
作为域,并在主机中使用"192.168.XXX.XXX"
。有谁知道为什么会这样?
答案 0 :(得分:0)
好的,我通过改变
解决了这个问题PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "tryad.com");
到
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "192.168.xxx.xxx", "DC=TryAD,DC=COM", username, password);
然后它的作品! 但我不知道这是如何工作的。 有人知道吗?