使用HostingEnvironment.Impersonate()从AD获取位置

时间:2016-11-29 15:23:54

标签: c# asp.net .net active-directory

所以我可以得到 使用以下方法显示名称,但我无法在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();
        }

1 个答案:

答案 0 :(得分:1)

基于Per Noalt's answer的代码。您需要获得基础类型,如下所示:

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

警告:上面的代码不会验证强制转换,也不会验证对象上的属性,也不会进行空值检查。