C# 我得到一个超出范围的错误,显示在OU下使用

C# 我得到一个超出范围的错误,显示在OU下使用,c#,active-directory,C#,Active Directory,我使用此代码显示OU中的所有用户: private void btn_objecten_Click(object sender, EventArgs e) { lb_objecten.Items.Clear(); //string ou = "DC=" + lv_rootOU.SelectedItem.ToString(); DirectoryEntry verbinding = new DirectoryEntry("LDAP://ou=Test,dc=roel,dc=

我使用此代码显示OU中的所有用户:

private void btn_objecten_Click(object sender, EventArgs e)
{
    lb_objecten.Items.Clear();
    //string ou = "DC=" + lv_rootOU.SelectedItem.ToString();
    DirectoryEntry verbinding = new DirectoryEntry("LDAP://ou=Test,dc=roel,dc=gui");
    DirectorySearcher zoekOU = new DirectorySearcher(verbinding);

    zoekOU.SearchScope = SearchScope.OneLevel;

    zoekOU.PropertiesToLoad.Add("user");
    zoekOU.Filter = "(objectCategory=user)";

    foreach (SearchResult deResult in zoekOU.FindAll())
    {
        string ouNaam = deResult.Properties["user"][0].ToString();            
        lb_objecten.Items.Add(ouNaam);   
    }
}
但是我在执行代码时遇到了一个超出范围的错误。
有人能帮忙吗?

我用这个来检查它是否为空,我不知道我是否正确使用了它,但错误已经消失,但它没有显示任何结果:

private void btn_objecten_Click(object sender, EventArgs e)
    {
        lb_objecten.Items.Clear();
        //string ou = "DC=" + lv_rootOU.SelectedItem.ToString();
        DirectoryEntry verbinding = new DirectoryEntry("LDAP://ou=Test,dc=roel,dc=gui");
        DirectorySearcher zoekOU = new DirectorySearcher(verbinding);

        zoekOU.SearchScope = SearchScope.OneLevel;

        zoekOU.PropertiesToLoad.Add("user");
        zoekOU.Filter = "(objectCategory=user)";

        foreach (SearchResult deResult in zoekOU.FindAll())
        {
            string ouNaam = deResult.Properties["user"][0].ToString();
            if (deResult.Equals(0))
            {
                lb_objecten.Items.Add(ouNaam);
            }
        }
试试这个

private void btn_objecten_Click(object sender, EventArgs e)
{
    lb_objecten.Items.Clear();
    //string ou = "DC=" + lv_rootOU.SelectedItem.ToString();
    DirectoryEntry verbinding = new DirectoryEntry("LDAP://ou=Test,dc=roel,dc=gui");
    DirectorySearcher zoekOU = new DirectorySearcher(verbinding);

    zoekOU.SearchScope = SearchScope.OneLevel;

    zoekOU.PropertiesToLoad.Add("user");
    zoekOU.Filter = "(objectCategory=user)";

    foreach (SearchResult deResult in zoekOU.FindAll())
    {
        if (deResult.Properties["user"].Any())
        {
          string ouNaam = deResult.Properties["user"][0].ToString();            
          lb_objecten.Items.Add(ouNaam);
        }

    }
}

我会检查deResult.Properties是否有任何值,请您回答。我是新来的。你能告诉我如何或在哪里找到它的工作原理吗。将propertiestoload设置为正确的值。用户是一个类,而不是一个属性。指定需要加载的属性,或将其保留为空以加载所有用户属性。2.将pagesize设置为某个值(例如1000)以启用分页。否则,如果您的ou包含1000多个对象,您将遇到麻烦。3.在搜索筛选器中将objectcategory替换为objectclass。4.在访问该属性之前,请检查searchentry中是否存在该属性。它会向我抛出一个错误:不包含“Any”的定义@roeludh请确保使用System.Linq时有
在文件顶部,或者只使用
deResult.Properties.Contains(“用户”)
,这将实现相同的功能。