我看到的2-5秒,我执行的DirectorySearcher FindOne()和第一网络封包我看出去到LDAP服务器的时间之间的初始延迟。 初始执行之后,后续执行瞬间完成约45秒。 这一时期的快速处决后,下一次执行将被推迟并重新所有后续执行会立即完成。 好像有某种缓存怎么回事,但我一直没能找到任何资源确认或说明是什么原因造成的初始延迟。
我们注意到这是一个客户端的Windows 2008服务器上,然后在我们自己的Windows 2008和Windows 7盒转载。
下面是我的简单的.NET 4.0 C#应用程序的样子。 之间的“开始”和“完成”的消息出现延迟。
任何想法,为什么这种延迟发生在初始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");
}
}
}
}