2016-03-10 2 views
0

У меня есть веб интерфейс API, которые выполняют 2 функцииWEB API + кэш всех пользователей из AD на Application_Start

  1. возврата тока регистрационные данные пользователя
  2. также включить поиск ASYN для любого пользователя.

Чтобы повысить производительность при первом вызове, я хочу получить всех пользователей и сохранить их в кеше на application_start. Я включил IIS нагреться, так что все должно быть в кэше до первого запроса

DirectoryEntry entry = new DirectoryEntry(LdapPath, activeDirectoryUserid, activeDirectoryPassword); 
      DirectorySearcher search = new DirectorySearcher(entry) 
      { 
       Filter = "(&(&(objectClass = user)(objectClass = person)))" 
      }; 
      search.PropertiesToLoad.Add(AppConstants.AD.Name); 
      search.PropertiesToLoad.Add(AppConstants.AD.SamAccountName); 
      search.PropertiesToLoad.Add(AppConstants.AD.ThumbnailPhoto); 
      search.PropertiesToLoad.Add(AppConstants.AD.FirstName); 
      search.PropertiesToLoad.Add(AppConstants.AD.Manager); 
      search.PropertiesToLoad.Add(AppConstants.AD.DistinguishedName); 
      search.CacheResults = false; 

      SearchResultCollection resultset = search.FindAll(); 
+1

И в чем проблема? – smr5

+0

добавлен код, выше которого я использую, чтобы получить всех пользователей. Это не работает. –

+1

Какая ошибка вы получаете? – smr5

ответ

0

Попробуйте использовать System.DirectoryServices.AccountManagement пространство имен.

using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "yourdomain.com")) 
{   
    UserPrincipal allUsers = new UserPrincipal(ctx); 
    PrincipalSearcher ps = new PrincipalSearcher(allUsers); 
    foreach (UserPrincipal user in ps.FindAll()) 
    { 
    //USER will contain the necessary information you need 
    string name = user.DisplayName; 
    } 
} 
+0

это не возвращает менеджера. Я нашел решение. Смотри ниже –

Смежные вопросы