从Active Directory PrincipalContext获取所有用户

10

我正在使用下面的代码来访问我的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) 替换了下拉框,现在它可以正常工作。

1个回答

9

我不能百分之百确定这是否是问题,但是PrincipalSearcher返回的确实是Principal对象列表。

因此,如果出现搜索器返回一个不是UserPrincipal的情况,那么你的result对象将为null-而不是它的.DisplayName属性。

所以你应该更改你的检查:

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

@user541597:好的 - 在运行此代码时,comboBox2 是否已经被创建?您可以在调试时检查 comboBox2comboBox2.Items 是否为 NULL 吗? - marc_s
在初始化组件之前调用了该方法。 - user541597

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接