我看到在执行 DirectorySearcher FindOne() 和我看到的第一个网络数据包发送到 LDAP 服务器之间存在 2-5 秒的初始延迟。初始执行后,后续执行会立即完成约 45 秒。在那段快速执行之后,下一次执行将被延迟,并且所有后续执行都将立即完成。似乎正在进行某种缓存,但我无法找到任何资源来确认或描述导致初始延迟的原因。
我们在客户端 Windows 2008 服务器上注意到了这一点,然后在我们自己的 Windows 2008 和 Windows 7 机器上进行了复制。
这是我的简单 .NET 4.0 C# 应用程序的样子。延迟发生在“Started”和“Finished”消息之间。
知道为什么在初始 FindOne() 执行时会出现这种延迟吗?任何帮助深表感谢!
using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace LdapTest
{
class Program
{
static void Main(string[] args)
{
string[] fetchAttributes;
fetchAttributes = new string[] { "{string[0]}" };
using (DirectoryEntry searchRoot = new DirectoryEntry("LDAP://localserver/ou=lab,dc=ourdomain,dc=com", "cn=binduser,ou=Services,dc=ourdomain,dc=com", "Password", AuthenticationTypes.ReadonlyServer))
{
using (DirectorySearcher searcher = new DirectorySearcher(searchRoot, "(sAMAccountName=UserName)", fetchAttributes, SearchScope.Subtree))
{
Console.WriteLine("Started");
SearchResult result = searcher.FindOne();
Console.WriteLine("Finished");
}
}
}
}