C# 我得到一个超出范围的错误,显示在OU下使用
我使用此代码显示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=
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(“用户”)
,这将实现相同的功能。