Я занимаюсь разработкой приложения SharePoint, для которого требуются пользователи из указанного подразделения Windows Server 2003 Active Directory.
Во-первых, меня не беспокоили операции «Dispose» и «Close» над объектами DirectoryServices. На этом этапе операции извлечения были быстрыми и успешными.
Но это приводило к ошибке «Сервер не работает» после 2-х попыток. И эта ошибка делает все приложение хуже, как при остановке других операций AD.
Затем я исправил эту ошибку, добавив операторы для каждого объекта DirectoryEntry, DirectorySearcher и SearchResultCollection.
Тогда я дошел до того, что у меня больше не появляется ошибка «Сервер не работает». Но когда я пытаюсь извлечь пользователей из AD 1 или более раз с помощью метода DirectorySearcher.FindAll, первый работает быстро и успешно, другие медленнее, но успешнее. Это отнимает время ожидания. Не могли бы вы помочь мне с моей ситуацией по поводу этого замедления?
Вот пример кода:
using (DirectoryEntry directoryEntry = new DirectoryEntry(connectionString, userName, password))
{
using (DirectorySearcher search = new DirectorySearcher(directoryEntry))
{
search.SearchScope = SearchLevel.OneLevel;
search.ReferralChasing = ReferralChasingOption.All;
search.Filter = filter;
search.SizeLimit = 200;
//Limits the property count for search result
SetUserDirectorySearcherPropertiesToLoad(search);
using (SearchResultCollection result = search.FindAll())
{
foreach (SearchResult searchResult in result)
{
// Get user attributes
}}}}
Заранее спасибо