未处理的异常Active Directory

时间:2014-08-12 06:49:34

标签: c# .net active-directory

我是活动目录的新手,我正在尝试显示Active Directory中组类别的详细信息。以下是我的代码:

entry = new DirectoryEntry(strPath);

DirectoryEntry schema = entry.SchemaEntry;
System.DirectoryServices.DirectorySearcher myNewSearcher = new System.DirectoryServices.DirectorySearcher(entry);

mySearcher.Filter = ("(objectClass=*)");

foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
    Console.WriteLine("First Name: " + resEnt.Properties["givenName"][0].ToString());
    Console.WriteLine("Last Name : " + resEnt.Properties["sn"][0].ToString());
    Console.WriteLine("SAM account name   : " + resEnt.Properties["samAccountName"][0].ToString());
    Console.WriteLine("User principal name: " + resEnt.Properties["userPrincipalName"][0].ToString());
    Console.WriteLine();
}

我得到的错误是:

  

未处理的类型' System.ArgumentOutOfRangeException'发生在mscorlib.dll中附加信息:索引超出范围。必须是非负数且小于集合的大小。

我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:2)

可能未设置AD属性 - 在这种情况下,调用.Properties[..][0]会导致此异常。

您需要检查从DirectorySearcher返回的每个属性是否已设置 -

if(resEnt.Properties["givenName"] != null && resEnt.Properties["givenName"].Count > 0) {
   Console.WriteLine("First Name: " + resEnt.Properties["givenName"][0].ToString());
}