我正在编写一个性能敏感的代码片段,它将查询LDAP目录,在该目录中找不到所请求的对象(用户或组)可能很常见。搜索LDAP无例外
我们使用System.DirectoryServices.Protocols.LdapConnection.SendRequest()来提交查询。
如果找不到组/用户,SendRequest()将抛出DirectoryOperationException。由于这是性能敏感,我真的想避免例外,因为处理它们的性能受到影响。
是否有一种替代方法来查询LDAP,使我可以得到一个空/虚假/空的收集结果,而不是一个异常?
(我没有看到任何明显的像TrySendRequest,但我不是很熟悉LDAP过滤器语法,所以我想也许还有什么我失踪)
您是否试过[DirectorySearcher](https://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher(v = vs.110).aspx)类? –
我敢说,查询本身会比处理异常花费更多。如果你真的出于效率的最微小的一点,并且ldap不是太大:为什么不将有关信息和compary缓存在内存中? – Marged
@Marged好了,这就是问题 - 它可能是一个非常大的LDAP目录。就像潜在的超过300,000个用户一样(它在一个产品中,而不是内部代码,所以我不能控制目录的大小/拓扑结构等) – JMarsch