我正在尝试对Active Directory执行查询以获取每个用户的所有名字。所以我创建了一个新的控制台应用程序,在我的main方法中有以下代码:
try
{
DirectoryEntry myLdapConnection =new DirectoryEntry("virtual.local");
myLdapConnection.Path = "LDAP://DC=virtual,DC=local";
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.PropertiesToLoad.Add("cn");
SearchResultCollection allUsers = search.FindAll();
我添加了一些代码来检查是否正在建立连接并且可以找到路径。我还确保Collection不是空的。
//For Debugging
if(DirectoryEntry.Exists(myLdapConnection.Path())
{
Console.WriteLine("Found");
}
else Console.WriteLine("Could Not Find LDAP Connection");
//In my case prints 230
Console.WriteLine("Total Count: " + allUsers.Count);
foreach(SearchResult result in allUsers)
{
//This prints out 0 then 1
Console.WriteLine("Count: " + result.Properties["cn'].Count);
if (result.Properties["cn"].Count > 0) //Skips the first value
{
Console.WriteLine(String.Format("{0,-20} : {1}",
result.Properties["cn"][0].ToString())); //Always fails
}
}
}
catch (Exception e)
{
Console.WriteLine("Exception caught:\n\n" + e.ToString());
}
我在代码中指定了打印属性的地方,它始终失败。我在这里得到一个System.FormatException,表明Index必须大于零且小于参数列表的大小。
所以最后我不确定“result.Properties”是如何工作的,并且想知道你是否有任何关于如何修复或解决问题的建议。
答案 0 :(得分:1)
您正在定义两个格式说明符{0}和{1},但只指定一个参数。