为什么GroupPrincipal.FindByIdentity返回null,即使我知道组存在
本文关键字:我知道 存在 GroupPrincipal FindByIdentity 返回 null 为什么 | 更新日期: 2023-09-27 18:04:28
为什么
GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(),
"TEST_DESTINATION_GRP");
return null
?我知道TEST_DESTINATION_GRP
存在于集团的组织单位之下。
private void addUserToGroup(string userName, string groupName)
{
try
{
UserPrincipal user = UserPrincipal.FindByIdentity(getPrincipalContext(), IdentityType.SamAccountName, "jcolon");
GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), "TEST_DESTINATION_GRP");
//just to show that I can access AD
ArrayList x = getUserGroups(userName);
foreach (var xy in x)
{
Console.WriteLine(xy);
}//I can access AD FINE
if (group == null)
{ Console.WriteLine("Wtf!"); }
Console.WriteLine(user);
Console.WriteLine(group + "empty why!!!!");
}
catch (Exception e)
{
//log e
}
}
private PrincipalContext getPrincipalContext()
{
PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain,sDefaultOU);
return oPrincipalContext;
}
上面代码的输出是:
<>之前域用户GRP_ADMIN_SERVERGRP_PROG_IIICTXXA-FlexUserCTXXA-UsersWtfAbanico, Elnora@MSH空为什么! !之前任何想法吗?
您的getPrincipalContext
方法中sDomain
和sDefaultOU
的值是多少??
我会尝试以下步骤:
-
构建没有任何域或OU名称的
PrincipalContext
-在这种情况下,您的默认域及其顶级节点将被使用:PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
现在搜索-它是否找到你正在寻找的组??
-
检查以确保域和
sDefaultOU
值是正确的-如果您将您的主体上下文连接到一个OU,显然您不能在另一个OU中搜索(除非那是您正在连接的OU的子OU)。