【问题标题】:Getting all users from Active Directory PrincipalContext从 Active Directory PrincipalContext 获取所有用户
【发布时间】:2012-05-19 14:09:06
【问题描述】:

我正在使用以下代码访问我的 AD 中的用户列表,但是在我将用户添加到我的组合框的那一行中,我得到了一个空引用异常。

PrincipalContext AD = new PrincipalContext(ContextType.Domain, "mydomainip");
UserPrincipal u = new UserPrincipal(AD);
PrincipalSearcher search = new PrincipalSearcher(u);

foreach (UserPrincipal result in search.FindAll())
{
    if (result.DisplayName != null)
    {
        comboBox2.Items.Add(result.DisplayName);
    }
}

知道我做错了什么吗?

我用Console.WriteLine(result.DisplayName) 替换了组合框,它工作正常。

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:

    不是 100% 确定这是否是问题所在 - 但 PrincipalSearcher 确实返回了 Principal 对象的列表。

    因此,如果 - 无论出于何种原因 - 您的搜索者将返回 不是 UserPrincipal 的内容,那么您的对象 result 将为空 - 而不是 .DisplayName 属性。

    因此,您应该将检查更改为:

    foreach (UserPrincipal result in search.FindAll())
    {
        if (result != null && result.DisplayName != null)
        {
            comboBox2.Items.Add(result.DisplayName);
        }
    }
    

    【讨论】:

    • @user541597:好吧 - comboBox2 是在您运行此代码时创建的吗?调试时可以检查comboBox2comboBox2.Items是否为NULL??
    • 在初始化组件之前调用了方法。
    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多