C# 如何在Web服务中使用Active Directory进行自动完成
我想用Ajax构建一个具有自动完成功能的ASP.NET应用程序。我想使用Active Directory获取显示名称的数据 这是我的代码: ASPX:C# 如何在Web服务中使用Active Directory进行自动完成,c#,asp.net,web-services,autocomplete,active-directory,C#,Asp.net,Web Services,Autocomplete,Active Directory,我想用Ajax构建一个具有自动完成功能的ASP.NET应用程序。我想使用Active Directory获取显示名称的数据 这是我的代码: ASPX: 自动提示 asmx代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data; using System.DirectoryServic
自动提示
asmx代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.DirectoryServices;
namespace ADWebService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
public static string GetLdapProperty(SearchResult searchResult, string PropertyName)
{
if (searchResult.Properties.Contains(PropertyName))
{
return searchResult.Properties[PropertyName][0].ToString();
}
else
{
return string.Empty;
}
}
[WebMethod]
public string[] MitarbeiterErmitelln(string prefix)
{
string filterung = "((&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(displayName=*" + prefix + "*)))";
string ADPfad = "Domain";
int Counter = 0;
List<Benutzer> result = new List<Benutzer>();
DirectoryEntry Entry = new DirectoryEntry(ADPfad);
DirectorySearcher Searcher = new DirectorySearcher(Entry, filterung);
foreach (SearchResult usr in Searcher.FindAll())
{
result.Add(new Benutzer()
{
DisplayName = GetLdapProperty(usr, "displayName"),
});
Counter++;
}
return result.ToArray();
}
}
}
//The Class Benutzer is my Model Class
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
使用系统数据;
使用System.DirectoryServices;
名称空间ADWebService
{
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
公共类服务1:System.Web.Services.WebService
{
公共静态字符串GetLdapProperty(SearchResult SearchResult,string PropertyName)
{
if(searchResult.Properties.Contains(PropertyName))
{
返回searchResult.Properties[PropertyName][0].ToString();
}
其他的
{
返回字符串。空;
}
}
[网络方法]
公共字符串[]mitarbeiterrimtelln(字符串前缀)
{
string filterung=“(&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(电话号码=*)(邮件=*)(displayName=*“+前缀+”)”;
字符串ADPfad=“域”;
int计数器=0;
列表结果=新列表();
目录条目=新目录条目(ADPfad);
DirectorySearcher search=新的DirectorySearcher(条目,筛选);
foreach(Searcher.FindAll()中的SearchResult usr)
{
结果.添加(新的Benutzer()
{
DisplayName=GetLdapProperty(usr,“DisplayName”),
});
计数器++;
}
返回result.ToArray();
}
}
}
//班是我的模范班
怎么了。我想直接使用Active Directory 你能提供例外情况或错误吗。因为您发布了代码,但尚未编写问题。为什么不使用J-query而不是AutoCompleteXtender?返回result.ToArray();是错误的…我看了几分钟另一篇帖子,但在那里我得到了prop.Key.Equals(“cn”)的一个错误:(您是否考虑过使用绑定列表
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.DirectoryServices;
namespace ADWebService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
public static string GetLdapProperty(SearchResult searchResult, string PropertyName)
{
if (searchResult.Properties.Contains(PropertyName))
{
return searchResult.Properties[PropertyName][0].ToString();
}
else
{
return string.Empty;
}
}
[WebMethod]
public string[] MitarbeiterErmitelln(string prefix)
{
string filterung = "((&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(displayName=*" + prefix + "*)))";
string ADPfad = "Domain";
int Counter = 0;
List<Benutzer> result = new List<Benutzer>();
DirectoryEntry Entry = new DirectoryEntry(ADPfad);
DirectorySearcher Searcher = new DirectorySearcher(Entry, filterung);
foreach (SearchResult usr in Searcher.FindAll())
{
result.Add(new Benutzer()
{
DisplayName = GetLdapProperty(usr, "displayName"),
});
Counter++;
}
return result.ToArray();
}
}
}
//The Class Benutzer is my Model Class