通过c#/ .Net从AD检索特定用户详细信息

时间:2017-03-10 18:52:37

标签: c# asp.net authentication active-directory sspi

我正在尝试使用以下方式为特定ADGroup中的用户检索SamAccountNameSurnameGivenName

        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.Surnameprincipal.GivenName在编译时会出现以下错误:

'Principal'不包含'____'的定义,也找不到扩展方法

有人可以解释为什么我在IDE中使用代码转换时可以看到这些信息并将鼠标悬停在principal变量上,但无法访问代码中的属性吗?

2 个答案:

答案 0 :(得分:1)

根据{{​​3}}

SurNameGivenName不是Principal类型的公共属性

看起来您需要UserPrincipal类来公开这些属性,请参阅UserPrincipal docs

我现在无法100%验证,但我想如果你改变了

foreach (Principal principal in group.Members)

foreach (UserPrincipal principal in group.Members)

它应该有用

答案 1 :(得分:0)