【发布时间】:2012-07-24 13:01:34
【问题描述】:
我编写了一个从 Active Directory 获取数据的程序,我需要一个 LDAP 过滤器来过滤数据到 l(城市)参数。
我的代码:
public void SearchByCity(string city)
{
//What I must do :(
DirectoryEntry Entry = new DirectoryEntry("LDAP://<l= + city + >");
string filter = "(&(objectClass=user)(objectCategory=person)(cn=*))";
DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);
var q = from s in Searcher.FindAll().OfType<SearchResult>()
select new
{
Benutzer = GetProperty(s, "sAMAccountName"),
eMail = GetProperty(s, "mail"),
Vorname = GetProperty(s, "givenName"),
Nachname = GetProperty(s, "sn"),
Telefon = GetProperty(s, "telephoneNumber"),
UserID = s.GetDirectoryEntry().Guid
};
this.myListView.DataSource = q;
this.myListView.DataBind();
}
塔拉索夫
【问题讨论】:
-
在 LDAP 过滤器中不适合城市,但我现在有解决方案...我发布它
-
字符串过滤器 = "(&(objectClass=user)(objectCategory=person)(l=" + city + ")(cn=*))"; //city是LDAP参数值
-
考虑当前的过滤器组件
cn=*。如果所有候选条目都具有CN属性,则这可能不是必需的。如果是这种情况,如果没有当前过滤器,搜索会更快。 -
CN 对用户是强制性的,因此您不需要包含过滤器的那部分。
标签: c# asp.net active-directory ldap directoryentry