C# asp.net全局地址列表的快速查询

C# asp.net全局地址列表的快速查询,c#,asp.net,ldap,gal,C#,Asp.net,Ldap,Gal,我需要做的是从网页上实现GAL的查询。我尝试了标准方式(使用DirectoryServices查询LDAP),但这对我没有多大帮助,因为GAL中有大量记录(约15万条)。我需要的是获取以下查询的用户信息: (&(objectCategory=person)(objectClass=user)(|(SAMAccountName=*{0}*)(displayname=*{0}*)(userprincipalname=*{0}*))), 其中,{0}代表我从用户那里获得的数据 Outlook

我需要做的是从网页上实现GAL的查询。我尝试了标准方式(使用
DirectoryServices
查询LDAP),但这对我没有多大帮助,因为GAL中有大量记录(约15万条)。我需要的是获取以下查询的用户信息:

(&(objectCategory=person)(objectClass=user)(|(SAMAccountName=*{0}*)(displayname=*{0}*)(userprincipalname=*{0}*))),
其中,
{0}
代表我从用户那里获得的数据

Outlook做这些事情的速度非常快。我猜它将数据存储在某个地方,并以某种方式与GAL同步

我试图做的是维护GAL的同步副本(我只需要3个字段),但我不知道如何为“新”项生成查询,例如上周添加的用户


有没有办法获取此类信息?

我建议找出如何使LDAP查询具有响应性,因为我非常怀疑Outlook是否会缓存这些数据。你可能想把它作为一个起点


也就是说,您希望在搜索中添加一个参数,以便在更改属性时搜索
,或在创建属性时搜索
。您可以查看以了解如何从其中一个属性进行搜索。

是否需要通配符星号?是的,如果没有通配符,我有可以接受的时间(如10-15秒)来获取答案。因此,通配符会减慢搜索速度,我是否可以建议使用精确匹配,然后在未找到匹配项时使用通配符重新运行?Outlook每天同步通讯簿,也许您可以使用数据集过滤将其缓存在数据集中?正如我所说,我每天只需要从ldap到sql获取所有信息,但我只需要从ldap获取新的(或更改的)项目,这样我就不会每天重新加载150000个项目。