올바른 LDAP 경로를 얻기 위해 시스템 관리자로부터 많은 연구와 도움을받은 후 마침내이 작업을 수행하게되었습니다. 나는 다른 사람들이 그것으로부터 이익을 얻을 수 있도록 코드를 게시하고있다. (내가 먼저 .NET 4.0 AJAX 컨트롤 툴킷을 설치합니다.)
을 Default.aspx를 :
<ajaxToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True"></ajaxToolkit:ToolkitScriptManager>
<asp:TextBox ID="txtSearchAD" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ServiceMethod="findEmp"
MinimumPrefixLength="3"
CompletionInterval="100"
EnableCaching="true"
CompletionSetCount="10"
TargetControlID="txtSearchAD"
ID="ace1"
runat="server"
FirstRowSelected="false" ServicePath="ADS.asmx">
</ajaxToolkit:AutoCompleteExtender>
ADS.asmx.cs :
namespace EventTracking
{
/// <summary>
/// Summary description for ADS
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class ADS : System.Web.Services.WebService
{
[WebMethod]
public string[] findEmp(string prefixText, int count)
{
DirectoryEntry directory = new DirectoryEntry();
directory.Path = "LDAP://DC=yourdomain,DC=com"; //CHANGE to your LDAP path
string filter = "(&(cn=" + prefixText + "*))";
string[] strCats = { "cn" };
List<string> items = new List<string>();
DirectorySearcher dirComp = new DirectorySearcher(directory, filter, strCats, SearchScope.Subtree);
SearchResultCollection results = dirComp.FindAll();
foreach (SearchResult result in results)
{
foreach (DictionaryEntry prop in result.Properties)
{
if (prop.Key.Equals("cn"))
{
System.Collections.IEnumerable propsEnum = prop.Value as System.Collections.IEnumerable;
foreach (object individualValue in propsEnum)
{
if (individualValue.ToString().IndexOf(prefixText) != 0)
{
items.Add(individualValue.ToString());
}
}
}
}
}
return items.ToArray();
}
}
}
을 즐기십시오!
궁금한 점이 무엇입니까? 사용자가 자신의 사용자 이름 ("사용자가 자신의 이름을 입력하기 시작합니다")을 입력하는 것을 돕는 것처럼 설명합니다. 사용자가 이미 인증 된 경우 이름을 입력 할 필요가 없으며 인증 정보를 통해 검색 할 수 있습니다. 로그온 페이지에서와 같이 사용자가 아직 인증되지 않은 경우이 자동 완성은 인증되지 않은 클라이언트에 중요한 정보 (AD의 모든 이름)를 유출합니다. –
내부 사용자 만 사용할 수 있습니다. 사용자는 자신의 이름뿐 아니라 동료 직원의 이름도 입력하게됩니다. 이미 Outlook을 통해이 정보에 액세스 할 수 있습니다. 나는 단지 그들이 양식을 작성하는 것을 더 쉽게하려고 노력하고있다. – Psykopup