Я хочу получить информацию только от 1 пользователя из 20 000 пользователей. Время отклика метода, который я использовал ниже, составляет 40 секунд. Каково решение этой проблемы?
public AuthenticatedUserProperties Info(string Username)
{
try
{
var context = new PrincipalContext(ContextType.Domain, Settings.LDAPDomain, Settings.LDAPContainer, Settings.LDAPUsername, Settings.LDAPPassword);
UserPrincipal user = new UserPrincipal(context);
user.SamAccountName = Username;
var searcher = new PrincipalSearcher(user);
var searchResults = searcher.FindOne();
DirectoryEntry de = searchResults.GetUnderlyingObject() as DirectoryEntry;
ActiveDirectoryUserProperties prop = ConvertLdapUserPropertyToArray(de);
return new AuthenticatedUserProperties
{
Status = true,
Properties = prop
};
}
catch (Exception e)
{
return new AuthenticatedUserProperties
{
Status = false,
Properties = null
};
}
}
ConvertLdapUserPropertyToArray
? Также вы можете использоватьUserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, Username);
вместоPrincipalSearcher
. - person The-First-Tiger   schedule 24.07.2018ConvertLdapUserPropertyToArray
. Если вы обрабатываете много реквизитов вConvertLdapUserPropertyToArray
, используя базовый DirectoryEntry, это может быть медленным, потому что доступ к большинству значений свойств запускает новый запрос к серверу ldap. Вы можете переопределить UserPrincipal и добавить требуемые свойства или использовать «DirectoryServices» вместо «AccountingManagement» и использоватьDirectorySearcher
с предварительно настроенными свойствами для загрузки. - person The-First-Tiger   schedule 24.07.2018DirectorySearcher
, поскольку он предварительно загружает свойства, которые могут повысить производительность, но я не знаю, действительно ли это узкое место, но поиск пользователя не должен быть. Здесь кто-то говорит Запрос нескольких тысяч пользователей,[...](около 30 секунд для ~34 тыс. пользователей) stackoverflow.com/questions/45357892 Пример реализации: codeshare.io/am3L0X Потребовалось 170 мс на поиск пользователя ~3 тыс. пользователей 2.5 на преобразование реквизита - person The-First-Tiger   schedule 24.07.2018