2017-08-17 25 views
3

私は私の会社ADを使用しているユーザーを認証するために取り組んでいます。このコードは動作していますが、DirectorySearcherの結果を返すのに25-30秒以上かかります。応答時間を改善するために私は何ができますか?System.DirectoryServicesが遅い

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

一つの方法は、ディレクトリ内のユーザーの数を減らすことであろう。 – itsme86

答えて

0

私はADと同様の問題に直面しましたが、私は結果をキャッシュすることでこの問題を解決しました。いくつかのバックグラウンドプロセスを作成して、ADとデータソースを同期することもできます。