2011-08-04 4 views
2

なぜ復帰nullGroupPrincipal.FindByIdentityは、グループが存在することがわかっていてもなぜnullを返しますか?

GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), 
                 "TEST_DESTINATION_GRP"); 

でしょうか?私は、TEST_DESTINATION_GRPが組織の組織単位の下に存在するという事実を知っています。

マイコード:

private void addUserToGroup(string userName, string groupName) 
{ 
    try 
    { 
     UserPrincipal user = UserPrincipal.FindByIdentity(getPrincipalContext(), IdentityType.SamAccountName, "jcolon"); 
     GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), "TEST_DESTINATION_GRP"); 
     //just to show that I can access AD    
     ArrayList x = getUserGroups(userName); 

     foreach (var xy in x) 
     { 
      Console.WriteLine(xy); 
     }//I can access AD FINE 

     if (group == null) 
     { Console.WriteLine("Wtf!"); } 
     Console.WriteLine(user); 
     Console.WriteLine(group + "empty why!!!!"); 
    } 
    catch (Exception e) 
    { 
     //log e 
    } 
} 

private PrincipalContext getPrincipalContext() 
{ 
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain,sDefaultOU);   
    return oPrincipalContext; 
} 

上記のコードの出力は次のようになります。

 
Domain Users 
GRP_ADMIN_SERVER 
GRP_PROG_III 
CTXXA-FlexUser 
CTXXA-Users 
Wtf 
Abanico, [email protected] 
empty why!!!! 

任意の考え?

答えて

5

getPrincipalContextメソッドのsDomainsDefaultOUの値は何ですか?

私は、次の手順しようとするだろう:任意のドメインまたはOU名なしでごPrincipalContextを構築し

  1. - その場合には、デフォルトのドメインとその最上位ノードが使用されます。

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 
    

    検索する - あなたの探しているグループが見つかりますか?

  2. ドメインとsDefaultOUの値が正しいことを確認してください - プリンシパルコンテキストを1つのOUに接続すると、別のOUを後で検索することはできません(これは、接続しているOUの子OU )。

関連する問題