如何使用 C# 在活动目录中搜索用户的姓氏和名字



当我想搜索用户的姓氏时,我有这个代码运行得很好

public static string GetPhoneFromAD()
{
try
{
DirectoryEntry entryDomain = new DirectoryEntry("LDAP://" + domain);
DirectorySearcher ds = new DirectorySearcher(entryDomain);
string currentContextIdentity = System.Web.HttpContext.Current.User.Identity.Name;
string lastName = currentContextIdentity.Split(' ')[currentContextIdentity.Split(' ').Length - 1];
ds.Filter = "(sn=" + lastName + ")";
SearchResult sr = ds.FindOne();
string telephoneNumber = sr.Properties["telephoneNumber"][0].ToString();
return FormatPhone(telephoneNumber);
}
catch (Exception exception)
{
drmsda.InsertErrorlog("manage.aspx.cs", "Error in an attempt to get the phone number", exception.Source, exception.Message + " " + exception.StackTrace, "");
drmsda.sendErrorEmail("Error: SetPhone generated email", exception.Message);
return string.Empty;
}
}

然而,如果用户的姓氏很常见,比如Smith,我就不会选择正确的条目。因此,我想添加另一个标准,例如名字。然而,我提出的问题不起作用。我确实尝试了以下

ds.Filter = "(givenName=" + firstName  + "&sn=" + lastName + ")";

但这不起作用,有人能帮忙吗?

提前感谢

LDAP筛选器语法与此有点不同;你想要:

(&(givenName=joe)(sn=bloggs))

有关许多示例,请参见此处。

最新更新