首页 > 解决方案 > LDAP 返回属性中的一些不是由我给出的,它没有加载部门属性?MVC 5

问题描述

我获取广告特定用户详细信息的代码是,

  SearchResultCollection results;
                    DirectorySearcher ds = null;
                    DirectoryEntry de = new
                         DirectoryEntry("LDAP://****");
                    SearchResult sr;

                    ds = BuildUserSearcher(de);

                    ds.Filter = string.Format("(&(objectClass=user)(|(&(SAMAccountName={0}*))))", model.User.Username.Trim());

                    sr = ds.FindOne();



 public DirectorySearcher BuildUserSearcher(DirectoryEntry de)
    {
        DirectorySearcher ds = null;

    ds = new DirectorySearcher(de);

    ds.PropertiesToLoad.Add("department"); 
    // Full Name
    ds.PropertiesToLoad.Add("name");
    // Email Address
    ds.PropertiesToLoad.Add("mobile");
    // First Name
    ds.PropertiesToLoad.Add("givenname");
    // Last Name (Surname)

    // Login Name
    ds.PropertiesToLoad.Add("userPrincipalName");
    // Distinguished Name
    ds.PropertiesToLoad.Add("distinguishedName");

    ds.PropertiesToLoad.Add("sn");

    return ds;
}

代码正在工作并返回值,但不是按要求返回这些属性,

"distinguishedname"
"userprincipalname"
"givenname"
"sn"
"name"
"adspath"

它不是从方法返回属性,我必须需要部门?任何想法

我有类似的 adspath 值

""LDAP://CN=John cena,OU=Developers,OU=IT Department,OU=Users Acounts,DC=Mumbai,DC=Local""

有没有办法从这个网址“ OU=IT Department

希望您的建议

谢谢

标签: c#asp.net-mvc-5active-directoryldapactivedirectorymembership

解决方案


该 AD 帐户是否在department属性中有值?如果属性为空,则根本不会出现在Properties集合中。这是正常的。

因此,您必须sr.Properties.Contains("department")在尝试使用它之前检查该值是否存在。

附带一点:您BuildUserSearcher可以简化为:

public DirectorySearcher BuildUserSearcher(DirectoryEntry de)
{
    return new DirectorySearcher(de) {
        PropertiesToLoad = {
            "department",
            "name",              // Full Name
            "mobile",            // Email Address
            "givenname",         // First Name
            "userPrincipalName", // Login Name
            "distinguishedName", // Distinguished Name
            "sn"                 // Last Name (Surname)
        }
    };
}

功能上没有区别,只是代码更短。


推荐阅读