2016-08-06 6 views
2

電子メールIDを渡してActive Directoryからユーザー名を検索しています。それは正常に動作しています。しかし、ユーザー名を取得するには30〜40秒かかります。電子メールアドレスでActive Directoryからユーザー名を見つける他の方法はありますか?電子メールIDを使用してActive Directoryからユーザー名を検索

は私のコードを参照してください:

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "domainname")) 
{ 
    UserPrincipal userPrincipal = new UserPrincipal(context); 
    PrincipalSearcher principalSearch = new PrincipalSearcher(userPrincipal); 

    foreach (UserPrincipal result in principalSearch.FindAll()) 
    { 
     if (result != null && result.EmailAddress != null && result.EmailAddress.Equals(user.Email, StringComparison.OrdinalIgnoreCase)) 
     { 
      user.FirstName = result.GivenName; 
      user.LastName = result.Surname; 
     } 
    } 
} 
+0

[電子メールアドレスでのActiveDirectory内のルックアップユーザー](http://stackoverflow.com/questions/18658345/lookup-user-in-activedirectory-by-email-address) – tharif

答えて

5

あなたがそれらの見つけるためにするすべてのユーザーを列挙する必要はありません!それがうまくいかなければならない場合

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "domainname")) 
{ 
    UserPrincipal yourUser = UserPrincipal.FindByIdentity(context, EmailAddress); 

    if (yourUser != null) 
    { 
     user.FirstName = result.GivenName; 
     user.LastName = result.Surname; 
    } 
} 

、またはあなたが一度にいくつかの基準を検索する必要がある場合は、QBE(例による問合せ)アプローチとPrincipalSearcherを使用 - 検索 1:このコードを試してみてくださいあなたが必要とするユーザー - すべてユーザーを経由しないでください!

// create your domain context 
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "domainname")) 
{  
    // define a "query-by-example" principal - 
    UserPrincipal qbeUser = new UserPrincipal(ctx); 
    qbeUser.EmailAddress = yourEmailAddress; 

    // create your principal searcher passing in the QBE principal  
    PrincipalSearcher srch = new PrincipalSearcher(qbeUser); 

    // find all matches 
    foreach(var found in srch.FindAll()) 
    { 
     // do whatever here - "found" is of type "Principal" - it could be user, group, computer.....   
    } 
} 
+0

感謝you.Itsの可能性のある重複完璧に働いた – SivaRajini

関連する問題