Я запрашиваю нашу 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()
};
}
}
Как вы можете видеть, я пытаюсь преобразовать результаты в список ADnser 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 не содержит свойства для почты, когда у пользователя нет электронной почты.Есть ли способ получить результат для возврата свойства с нулевым или пустым значением вместо этого?
Спасибо за вашу помощь.