【发布时间】:2016-11-14 11:02:50
【问题描述】:
我正在构建一个应用程序,我需要为 LDAP 查询中的每个匹配实例创建一个列表。
它应该是这样工作的...如果用户在“Smith”中搜索 sn(姓氏),那么所有姓氏为“Smith”的人都将在列表中填充他们的详细信息。
然后,我可以使用此列表生成用户可以从中选择的选择框的详细信息,然后将其保存在他们使用的任何形式中。
我试图在我的解决方案中的许多应用程序中重复使用此功能,以便将搜索字段和要搜索的值传递给此操作(很可能以通配符为后缀),然后填充列表。称为此操作的页面可以保存他们需要从 LDAP 搜索中获得的任何详细信息,无论是名字还是 cn,无论需要什么。
不过,我似乎无法让我的代码看起来正确,我的假设是它类似于 JS 中的函数,但 Visual Studio 将我的部分代码突出显示为不正确。
这是我的代码(我已将 cmets 放在 Visual Studio 突出显示为不正确的部分旁边)
using System.Collections.Generic;
using System.DirectoryServices;
namespace solutionName.Apps.Models
{
public class LDAP
{
protected void LDAP_Search(string LDAP_Field, string LDAP_Value)
{
string _ldapserver = "myLDAPServer";
string _port = "123";
string _username = "myUserName";
string _password = "myPassword";
_ldapserver = "LDAP://" + _ldapserver + ":" + _port;
DirectoryEntry entry = new DirectoryEntry(_ldapserver, _username, _password);
entry.AuthenticationType = AuthenticationTypes.None;
DirectorySearcher deSearch = new DirectorySearcher(entry);
deSearch.PropertiesToLoad.Add("fullname");
deSearch.PropertiesToLoad.Add("givenName");
deSearch.PropertiesToLoad.Add("sn");
deSearch.PropertiesToLoad.Add("PersonOUC");
deSearch.PropertiesToLoad.Add("mail");
deSearch.PropertiesToLoad.Add("cn");
deSearch.Filter = "(&(" + LDAP_Field + "=" + LDAP_Value + "))";
var LDAPResponses = new List<LDAP_Search_Model>
{ // this line is highlighted as incorrect
foreach (SearchResult sresult in deSearch.FindAll())
{
new LDAP_Search_Model
{
fName = sresult.Properties["givenName"][0].ToString(),
sName = sresult.Properties["sn"][0].ToString(),
fullName = sresult.Properties["fullname"][0].ToString(),
OUC = sresult.Properties["PersonOUC"][0].ToString(),
email = sresult.Properties["mail"][0].ToString(),
UIN = sresult.Properties["cn"][0].ToString()
};
}
}; // this line is also highlighted as incorrect
}
}
public class LDAP_Search_Model
{
public string UIN { get; set; }
public string fName { get; set; }
public string sName { get; set; }
public string fullName { get; set; }
public string OUC { get; set; }
public string email { get; set; }
}
}
【问题讨论】:
标签: c# class models ldap-query