首页 > 解决方案 > 使用 DirectorySearcher 的意外行为“服务器无法运行”

问题描述

尝试通过 LDAP 查询组时,我在使用 DirectorySearcher 类时遇到了一个非常奇怪的问题。

using(var directoryEntry = new DirectoryEntry(thePath,theUserName,ThePassword)
{
var ONLY_GROUPS = "(objectClass=group)"
var filter = string.format("(&{0}({1}=*{2}*))",ONLY_GROUPS,"Name","theGroupName");
using(var searcher = new DirectorySearcher(directoryEntry,filter))
{
...
 searcher.FindAll();
...
}

在某些情况下,在我们的生产代码中调用 FindAll 函数时,一些客户会收到 ComException“服务器无法运行”。这意味着试图连接到 LDAP 服务器的机器与它没有连接。

但作为我们代码流的一部分,我们在同一个 LDAP 上调用不同的查询来检索域控制器,这总是有效的。当调用用于检索组的 LDAP 查询时,我们得到 ComException。

另一个笔记

我们有 C++ 代码,可以通过相同的 LDAP 运行组查询。

此外,我创建了一个运行相同生产代码的可执行文件,它适用于失败的客户(所以我想我们已经排除了这是连接问题的选项)

我的想法什么时候会导致这个问题。

标签: c#c#-4.0ldapldap-query

解决方案


想添加有关此问题的另一个重要更新。似乎第一次尝试运行 ldap 查询有效!.

意思是在 iisrest 之后,ldap 组查询工作,但然后我等待 120 秒,事情停止工作,ldap 查询在另一个 iisrest 之后卡在绑定阶段/手,再次 ldap 组工作,等待 120 秒相同的结果


推荐阅读