Ldap AD增量搜索超时

Ldap AD增量搜索超时,ldap,Ldap,我有一款产品,每天运行完全同步,每30分钟运行增量同步。它有一个搜索筛选器,如:“(|)(&(objectClass=User)(!(objectClass=Computer))((memberOf={some_dn})))”。完全同步或增量同步生成的cookie将用作下一次增量搜索的输入。 在我们的env上,在15次增量同步成功(对于其他情况,可能只有4次)后,第16次增量同步卡住(等待AD服务器响应,因为DirectorySearch的超时设置为-1。是的,我可以将expire设置为5分钟,

我有一款产品,每天运行完全同步,每30分钟运行增量同步。它有一个搜索筛选器,如:“(|)(&(objectClass=User)(!(objectClass=Computer))((memberOf={some_dn})))”。完全同步或增量同步生成的cookie将用作下一次增量搜索的输入。 在我们的env上,在15次增量同步成功(对于其他情况,可能只有4次)后,第16次增量同步卡住(等待AD服务器响应,因为DirectorySearch的超时设置为-1。是的,我可以将expire设置为5分钟,但它仍然不会返回您想要的内容)。当我拿起这个失败的增量搜索的cookie并在我的另一个独立应用程序(只是一个充满DirectorySearch代码的WinForm)中运行它时,它也卡住了

另一件奇怪的事是,当我检查日志,得到了前15次成功增量搜索使用的cookie,并在我的独立应用程序中运行时,所有这15个cookie都卡住了! 还有一件奇怪的事情发生了,当我在第16次增量搜索中仍然使用cookie,但将过滤器更改为“(&(objectClass=User)(!(objectClass=Computer))”(这里我删除了member={…}),搜索可以通过

我们可以恢复产品的唯一方法是进行另一次始终有效的完全同步,然后在此完全同步后进行增量搜索。但增量同步N次后,增量搜索将再次卡住

代码应如下所示:

var searcher = new DirectorySearcher()
{
    ClientTimeout = TimeSpan.FromSeconds(-1),
    ServerPageTimeLimit = TimeSpan.FromSeconds(-1),
    ServerTimeLimit = TimeSpan.FromSeconds(-1),
    DerefAlias = DereferenceAlias.Never,
    ReferralChasing = ReferralChasingOption.None
};
searcher.SearchRoot = new DirectoryEntry(basePath);
searcher.Filter = extraFilter;
searcher.SearchScope = SearchScope.Subtree;
searcher.CacheResults = false;
searcher.PropertiesToLoad.AddRange(new string[] { "name", "mail" });
searcher.DirectorySynchronization = new DirectorySynchronization();
searcher.DirectorySynchronization.Option |= DirectorySynchronizationOptions.ObjectSecurity
                                            | DirectorySynchronizationOptions.ParentsFirst;
searcher.DirectorySynchronization.Option |= DirectorySynchronizationOptions.IncrementalValues;
searcher.DirectorySynchronization.ResetDirectorySynchronizationCookie(Convert.FromBase64String(cookie));
searcher.ExtendedDN = ExtendedDN.HexString;
我的代码中是否有错误,或者是MS AD中的错误?我的广告是微软广告2012

2018年9月9日更新:
最终,这是AD 20082012的一个bug,Microsoft将很快发布一个补丁。

我的广告中只有10多个用户。因此性能应该可以。向我们展示一些您正在使用的代码。最终,这是AD 2008~12上的一个错误,Microsoft将很快发布修补程序。我的广告中只有10多个用户。因此性能应该可以。向我们展示您正在使用的一些代码。最终,这是AD 2008~12上的一个错误,Microsoft将很快发布修补程序。