2016-11-29 59 views
0

因此,我可以使用下面的方法获取 显示名称,但我无法在AD中找到该结果的物理传输名称。值得注意的是,这种方法返回所有匹配,而不仅仅是用户,所以这可能是问题的一部分,但我不知道如何将搜索改进为只有用户。使用HostingEnvironment.Impersonate获取位置表单AD(

try 
     { 

      using (HostingEnvironment.Impersonate()) 
      { 
       using (var context = new PrincipalContext(ContextType.Domain, "********")) 
       { 
        UserPrincipal qbeUser = new UserPrincipal(context); 
        qbeUser.GivenName = search.letters; 
        using (var searcher = new PrincipalSearcher(qbeUser)) 
        { 
         foreach (var result in searcher.FindAll()) 
         { 
          list.Add(result.Name); 

         } 
        } 
       } 
      } 
     } 
     catch(Exception e) 
     { 
      return e.ToString(); 
     } 
+0

那么你的问题不是很清楚。但假设你想要一个“精确搜索”,你应该看到罗伯特哈维的答案[这里](http://stackoverflow.com/a/2128747/5588347)。 –

+0

@AshishSrivastava我试图让physicaldeliveryofficename字段形成结果对象。 – ZergRush

+0

你尝试过'result.PhysicalDeliveryOfficeName'吗? –

回答

1

基于Per Noalt's answer的编码。你需要得到的基本类型,像这样:

var directoryEntry = result.GetUnderlyingObject() as DirectoryEntry; directoryEntry.Properties["PhysicalDeliveryOfficeName"].Value

警告:上面的代码不会验证演员,也不是说财产存在的对象,并不做任何空检查。