Можно ли получить электронную почту пользователя из Active Directory, используя номер персонала в качестве условия запроса?
Я использую C # System.DirectoryServices
и немного растерялся.Предыдущий разработчик в моей компании использовал этот процесс, но у него было электронное письмо и он запрашивал номер сотрудника.Я изменил его на то, что, по моему мнению, должно быть, но, если честно, я не очень хорошо понимаю код.
Что-то не так с моим кодом?каждый раз, когда я запускаю его, я получаю ошибку Null Reference в строке DirectoryEntry up_user =
.Я предполагаю, что это потому, что предыдущая строка не получает никаких сущностей.
Кроме того, есть ли хорошая документация по этой теме?Куда бы я ни посмотрел, посты с 2011 или 2013 года.
У меня есть следующее:
try
{
string email = string.Empty;
ContextType authenticationType = ContextType.Domain;
PrincipalContext principalContext = new PrincipalContext(authenticationType, "MATRIC");
UserPrincipal userPrincipal = null;
userPrincipal = UserPrincipal.FindByIdentity(principalContext, empnum);
DirectoryEntry up_User = (DirectoryEntry)userPrincipal.GetUnderlyingObject();
DirectorySearcher deSearch = new DirectorySearcher(up_User);
SearchResultCollection results = deSearch.FindAll();
if (results != null && results.Count > 0)
{
ResultPropertyCollection rpc = results[0].Properties;
foreach (string rp in rpc.PropertyNames)
{
if (rp == "mail")
{
email = rpc["mail"][0].ToString();
}
}
if (email != string.Empty)
{
return email;
}
return null;
}
return null;
}
catch (Exception ex)
{
throw ex;
}