erste Angaben über die Benutzer aus dem AD zu langsam ist

Im mit Sie den folgenden code, um eine Reihe von Informationen über Mitarbeiter aus bestimmten Abteilungen und die Rückgabe einer Liste von AD...

Während es funktioniert, es scheint sehr langsam sein, ist es effizienter Weg, um verschiedene user-details von AD?

public static List<Employee> GetEmployeeListForDepartment(string departpment)
        {
            using (HostingEnvironment.Impersonate())
            {

                PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain);
                GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, departpment);
                PrincipalSearchResult<Principal> members = gp.GetMembers();
                List<Employee> employees = new List<Employee>();
                foreach (var member in members)
                {
                    var emp = CreateEmployee(member);
                    employees.Add(emp);
                }
                return employees.OrderBy(x => x.FirstName).ToList();
            }
        }

        private static Employee CreateEmployee(Principal member)
        {
            if (member != null)
            {
                DirectoryEntry de = (member.GetUnderlyingObject() as DirectoryEntry);
                if (de != null)
                {

                    string mobile = de.Properties.Contains("mobile") ? de.Properties["mobile"][0].ToString() : "";
                    string title = de.Properties.Contains("description") ? de.Properties["description"][0].ToString() : "";

//ETC ETC...
                    return new Employee { etc.. };

                }

            }
            return new Employee();
        }
  • Sie haben die option Zwischenspeichern der Ergebnisse selbst.
InformationsquelleAutor raklos | 2011-10-31
Schreibe einen Kommentar