Следующий код позволяет мне извлечь весь глобальный список адресов из DirectoryServices. Код функционирует так, что он дает мне то, что мне нужно. Проблема в том, что для возврата 1000 объектов требуется около 20 секунд. Есть ли что-то, что я могу сделать, чтобы ускорить это?Извлечение глобального списка адресов из DirectoryServices чрезвычайно медленное
public static List<Address> GetGlobalAddressList()
{
using (var searcher = new DirectorySearcher())
{
using (var entry = new DirectoryEntry(searcher.SearchRoot.Path, "*****", "*****"))
{
searcher.Filter = "(&(mailnickname=*)(objectClass=user))";
searcher.PropertiesToLoad.Add("cn");
searcher.PropertyNamesOnly = true;
searcher.SearchScope = SearchScope.Subtree;
searcher.Sort.Direction = SortDirection.Ascending;
searcher.Sort.PropertyName = "cn";
var results = searcher.FindAll();
var addressList = new List<Address>();
foreach (SearchResult i in results)
{
var address = new Address
{
DisplayName = (string)i.GetDirectoryEntry().Properties["displayName"].Value,
Mail = (string) i.GetDirectoryEntry().Properties["mail"].Value
};
addressList.Add(address);
}
return addressList;
}
}
}
public class Address
{
public string DisplayName { get; set; }
public string Mail { get; set; }
}
Возможно, профилировщик может определить узкие места? –