【发布时间】:2011-09-06 20:00:47
【问题描述】:
我正在使用以下代码查询我们的 Active Directory:
using (DirectorySearcher search = new DirectorySearcher(de))
{
search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("employeeid");
search.PropertiesToLoad.Add("employeenumber");
search.PropertiesToLoad.Add("distinguishedname");
search.PropertiesToLoad.Add("mail");
search.Filter = @"(&(objectClass=user)(employeeid=*)(employeenumber=*))";
search.PageSize = 3000;
SearchResultCollection src = search.FindAll();
foreach (SearchResult rec in src)
{
yield return new ADUser()
{
Name = rec.Properties["cn"][0].ToString(),
Path = rec.Properties["distinguishedname"][0].ToString(),
Acctno = rec.Properties["employeeid"][0].ToString(),
Personno = rec.Properties["employeenumber"][0].ToString(),
Email = rec.Properties["mail"][0].ToString()
};
}
}
如您所见,我正在尝试将结果转换为 ADUser 的 IEnumerable 列表(我自己的类是这样定义的):
public class ADUser
{
public string Name { get; set; }
public string Path { get; set; }
public string Acctno { get; set; }
public string Personno { get; set; }
public string Email { get; set; }
}
但是,只要我遇到没有电子邮件条目的用户,我的代码就会崩溃。当用户没有电子邮件时,似乎 SearchResult 不包含邮件属性。有没有办法让结果返回具有 null 或空值的属性?
感谢您的帮助。
【问题讨论】:
标签: c# active-directory