2013-03-25 7 views
0

Я пытаюсь получить имя менеджера для пользователя из активного каталога, я создал консольную программу для его проверки, и все работает отлично, когда я пытаюсь выполнить код в моей Sharepoint 2010 это просто дает мне исключение «Произошла операционная ошибка».

При дальнейшей отладке я вижу, что это ошибка с моим основным текстом, который генерирует исключение. «Для выполнения этой операции в соединении должно быть выполнено успешное связывание». Код ниже (примечание: код в попытке поймать точно так же, как и у меня есть это в моей консольного приложения.):Sharepoint 2010 не привязан к Active Directory

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; 

     } 
    } 
+0

Является ли ApplicationPoolIdentity запущенным как NetworkService? – Daro

ответ

0

Попробуйте изменить:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

в

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAINNAME");