尝试访问活动目录时获取 "The server could not be contacted."
Getting "The server could not be contacted." when trying to access active directory
我正在尝试这段代码:
public bool isTravelAdmin(string srvr, string usr, string password)
{
System.Diagnostics.Debug.WriteLine("I'm in isTravelAdmin!");
PrincipalContext domainctx = new PrincipalContext(ContextType.Domain, srvr);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(domainctx, IdentityType.SamAccountName, usr);
bool isMember = userPrincipal.IsMemberOf(domainctx, IdentityType.Name, "traveladmin");
if (isMember)
{
System.Diagnostics.Debug.WriteLine("This user is INDEED a member of that group");
return true;
}
else
{
System.Diagnostics.Debug.WriteLine("This user is *NOT* member of that group");
return false;
}
}
应该检查用户是否属于某个组 ("traveladmin"),但我得到
System.DirectoryServices.AccountManagement.PrincipalServerDownException
知道为什么以及如何解决吗?顺便说一句:
srvr = "LDAP://192.168.56.101/CN=Users,DC=estagioit,DC=local"
PS:我在另一种方法上使用相同的 srvr,它正在工作并正在连接。
PSS:如果这不是解决此问题的最佳方法,我愿意接受建议。
问题是"Principal Context"是怎么写的……应该是:
PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "DCESTAGIO");
在这种情况下。
如果您查看 PrincipalContext
构造函数的文档,应该会很清楚:
public PrincipalContext(ContextType contextType, string name)
或
public PrincipalContext(ContextType contextType, string name, string container)
所以你基本上需要:
- 您的上下文类型(此处:
ContextType.Domain
)
- 域名(只尝试 "Netbios" 名称,例如 "YOURDOMAIN" -
或为 "default" 域保留 NULL)
- 可选的容器(作为 LDAP 路径 - "distinguished" 名称,
完整路径但没有任何
LDAP://
前缀)
如 this 答案所示。
在您的情况下,只需将 srvr
更改为:
srvr = "DCESTAGIO"
我正在尝试这段代码:
public bool isTravelAdmin(string srvr, string usr, string password)
{
System.Diagnostics.Debug.WriteLine("I'm in isTravelAdmin!");
PrincipalContext domainctx = new PrincipalContext(ContextType.Domain, srvr);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(domainctx, IdentityType.SamAccountName, usr);
bool isMember = userPrincipal.IsMemberOf(domainctx, IdentityType.Name, "traveladmin");
if (isMember)
{
System.Diagnostics.Debug.WriteLine("This user is INDEED a member of that group");
return true;
}
else
{
System.Diagnostics.Debug.WriteLine("This user is *NOT* member of that group");
return false;
}
}
应该检查用户是否属于某个组 ("traveladmin"),但我得到
System.DirectoryServices.AccountManagement.PrincipalServerDownException
知道为什么以及如何解决吗?顺便说一句:
srvr = "LDAP://192.168.56.101/CN=Users,DC=estagioit,DC=local"
PS:我在另一种方法上使用相同的 srvr,它正在工作并正在连接。
PSS:如果这不是解决此问题的最佳方法,我愿意接受建议。
问题是"Principal Context"是怎么写的……应该是:
PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "DCESTAGIO");
在这种情况下。
如果您查看 PrincipalContext
构造函数的文档,应该会很清楚:
public PrincipalContext(ContextType contextType, string name)
或
public PrincipalContext(ContextType contextType, string name, string container)
所以你基本上需要:
- 您的上下文类型(此处:
ContextType.Domain
) - 域名(只尝试 "Netbios" 名称,例如 "YOURDOMAIN" - 或为 "default" 域保留 NULL)
- 可选的容器(作为 LDAP 路径 - "distinguished" 名称,
完整路径但没有任何
LDAP://
前缀)
如 this 答案所示。
在您的情况下,只需将 srvr
更改为:
srvr = "DCESTAGIO"