我正在尝试搜索事件目录以从中获取用户详细信息。我用下面的详细信息填充标签。它工作正常但是如果说用户没有“除法”的值那么它会爆炸并显示以下错误消息。我尝试了不同的方法,但无法让它在标签文本帮助中显示 null 或“”!
private void populate_table(string current_user)
{
string connection = ConfigurationManager.ConnectionStrings["ADConnection"].ToString();
DirectorySearcher dssearch = new DirectorySearcher(connection);
dssearch.Filter = "(sAMAccountName=" + current_user + ")";
SearchResult sresult = dssearch.FindOne();
DirectoryEntry dsresult = sresult.GetDirectoryEntry();
lblfname.Text = dsresult.Properties["givenName"][0].ToString();
lbllname.Text = dsresult.Properties["sn"][0].ToString();
lblemail.Text = dsresult.Properties["mail"][0].ToString();
lblDepartment.Text = dsresult.Properties["department"][0].ToString();
lblsam.Text = dsresult.Properties["samAccountName"][0].ToString();
lblBranch.Text = dsresult.Properties["division"][0].ToString();
}
我得到的错误是
Index was out of range. Must be non-negative and less than the size of the collection.
您需要检查以查看是否设置了给定的属性:
if (dsresult.Properties["division"] != null &&
dsresult.Properties["division"].Count > 0)
{
lblBranch.Text = dsresult.Properties["division"][0].ToString();
}
else
{
lblBranch.Text = string.Empty;
}
这就是 AD 的工作方式 - 您基本上需要检查任何不是必需属性的属性。任何不可为 null 的内容都可以在 AD 中“未设置”,因此 .Properties["...."]
将为 null
我是一名优秀的程序员,十分优秀!