Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Web服务中使用Active Directory进行自动完成_C#_Asp.net_Web Services_Autocomplete_Active Directory - Fatal编程技术网

C# 如何在Web服务中使用Active Directory进行自动完成

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

我想用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.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