2017-08-17 3 views
3

Ich arbeite daran, Benutzer mit meiner Firma AD zu authentifizieren. Dieser Code funktioniert, benötigt jedoch mehr als 25 bis 30 Sekunden, um DirectorySearcher-Ergebnisse zurückzugeben. Was kann ich tun, um die Reaktionszeit zu verbessern?System.DirectoryServices ist langsam

public bool ADauthentication(string userName,string password) 
     { 
      try 
      { 
       string domain = ConfigurationManager.AppSettings["DirectoryDomain"]; 
       string path = ConfigurationManager.AppSettings["DirectoryPath"]; 
       string domainAndUserName = domain + @"\" + userName; 
       DirectoryEntry entry = new DirectoryEntry(path+"CN=Users,DC=myDomain,DC=com", userName, password); 
       entry.AuthenticationType = AuthenticationTypes.Secure; 
       DirectorySearcher search = new DirectorySearcher(entry); 
       search.Filter = "(SAMAccountName=" + userName+")"; 
       search.PropertiesToLoad.Add("CN"); 
       SearchResult result = search.FindOne(); 
       if (result == null) 
       { 
        return false; 
       } 
       return true; 
      } 
      catch(Exception ex) 
      { 
       log.Error($"Error: {ex.ToString()}"); 
       return false; 
      } 
     } 
+0

Eine Möglichkeit wäre, die Anzahl der Benutzer in dem Verzeichnis zu reduzieren. – itsme86

Antwort

0

ich konfrontiert ähnliches Problem mit AD, aber ich dieses Problem gelöst, indem die Ergebnisse Caching. Sie können Hintergrundprozesse erstellen, um AD und Ihre Datenquelle zu synchronisieren.