0

Active Directoryからユーザーのマネージャー名を取得しようとしています。コンソールプログラムを作成してテストしましたが、すべて正常に機能します。Sharepoint2010プログラムでコードを試してみると、「An操作エラーが発生しました」。

さらにデバッグすると、principalcontextのエラーで、「この操作を実行するには、接続でバインドを正常に完了する必要があります」という例外がスローされることがわかります。コードは以下のとおりです(注:try catchのコードは、コンソールアプリのコードとまったく同じです)。

   public override void ItemAdding(SPItemEventProperties properties)
   {
       base.ItemAdding(properties);

       try 
       {
               // set up domain context
               PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

               // find a user
               UserPrincipal user = UserPrincipal.FindByIdentity(ctx, Environment.UserName);
               string samAccountName = "";


               if (user != null)
               {
                   // do something here....     
                   samAccountName = user.SamAccountName;
               }


               //Get the manager name from the active directory
               var domain = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;

               using (DirectoryEntry dir = new DirectoryEntry("LDAP://" + domain))
               {
                   using (DirectorySearcher ds = new DirectorySearcher(dir, "samAccountName=" + samAccountName))
                   {

                       SearchResult result = ds.FindOne();

                       string managerName = result.Properties["manager"][0].ToString();
                   }
               }



       }
       catch(Exception ex)
       {
           var message = ex.Message;

       }
   }
4

1 に答える 1

0

変更してみてください:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAINNAME");
于 2013-03-25T15:56:35.660 に答える