【发布时间】:2018-11-16 19:25:02
【问题描述】:
是否可以使用employeenumber 作为查询词从Active Directory 获取用户的电子邮件?
我正在使用 C# 的 System.DirectoryServices 并且有点迷茫。我公司以前的开发人员正在使用此流程,但他有一封电子邮件并正在查询员工编号。我已经把它改成了我认为应该的样子,但老实说,我不太了解代码。
我的代码有问题吗?每次我运行它时,我都会在 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;
}
【问题讨论】:
-
看起来您的问题是您的对象一直返回 null。您是否查看过此链接并探索了这些选项 -> stackoverflow.com/questions/37050930/…
标签: c# active-directory directoryservices