我想获得该用户在组列表。
这是我的代码:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mydomain.ac.uk", "DC=mydomain,DC=AC,DC=UK", "user", "password");
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "MyUser");
PrincipalSearchResult<Principal> results = user.GetGroups();
foreach(Principal p in results)
{
Response.Write(p.Name);
}
当我跑,我在该行下面的错误Response.Write(p.Name);
System.Runtime.InteropServices.COMException:指定的目录服务属性或值不存在。
当我检查结果的数量,它返回9,第一组是DomainUsers
。
我如何可以遍历所有9组列表中? 谢谢。
下面是用户的名单,我得到:
当省略如PrincipalContext类中描述的LDAP容器属性,运行代码的用户必须具有读取权限这两个默认User
容器(即CN=Users,DC=yourDomain,DC=COM
)和Computers
容器(即CN=Computers,DC=yourDomain,DC=COM
)。
如果用户没有所需的权限,您将收到以下错误信息:
指定的目录服务属性或值不存在
“context.Container”投掷类型的异常“System.NullReferenceException”字符串{System.NullReferenceException}
((新System.Linq.SystemCore_EnumerableDebugView(组))。项[5])。说明”投掷类型的异常 'System.Runtime.InteropServices.COMException' 字符串{System.Runtime.InteropServices.COMException}
尝试类似
foreach(Principal p in results)
{
if (p is GroupPrincipal)
Response.Write(p.DisplayName);
}
我知道这听起来很愚蠢,但它在过去一直为我工作。 您的结果看起来像只竟然发现1个安全组和8个“其他”类型的组。 这些“其他”组可能不具备这些属性。