我正在尝试使用以下方式为特定ADGroup中的用户检索SamAccountName
,Surname
,GivenName
:
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, adgroup);
foreach (Principal principal in group.Members)
{
samName = principal.SamAccountName;
surName = principal.SurName; <-- Intellisense gives error
givenName = principal.GivenName; <-- Intellisense gives error
}
当我逐步执行代码并在Visual Studio中为上面添加监视时,它们会显示正确的信息,但principal.Surname
和principal.GivenName
在编译时会出现以下错误:
'Principal'不包含'____'的定义,也找不到扩展方法
有人可以解释为什么我在IDE中使用代码转换时可以看到这些信息并将鼠标悬停在principal
变量上,但无法访问代码中的属性吗?
答案 0 :(得分:1)
SurName
和GivenName
不是Principal
类型的公共属性
看起来您需要UserPrincipal
类来公开这些属性,请参阅UserPrincipal docs
我现在无法100%验证,但我想如果你改变了
foreach (Principal principal in group.Members)
到
foreach (UserPrincipal principal in group.Members)
它应该有用
答案 1 :(得分:0)
Principal类没有属性Surname或GivenName https://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principal(v=vs.110).aspx