我想检索使用AD在他/她的机器中登录的用户的名字和姓氏。我使用以下代码:
string server = ConfigurationManager.AppSettings["ActiveDirectory.Server"];
DirectoryEntry entry = new DirectoryEntry(@"LDAP://" + server);
DirectorySearcher searcher = new DirectorySearcher(entry);
User user = GetUser(entry);
searcher.Filter = "sAMAccountName=" + user.UserAD;
searcher.PropertiesToLoad.Add("memberof");
SearchResult result = searcher.FindOne();
private static User GetUser(DirectoryEntry userEntry)
{
Usuario user = new User();
string[] username = HttpContext.Current.Request.ServerVariables["AUTH_USER"].Split('\\');
//THIS IS WHAT I NEED BUT IT DOES RETURN null.
//User.Name= (string)userEntry.Properties["givenName"].Value;
//User.LastName= (string)userEntry.Properties["sn"].Value;
user.Domain = username[0];
user.UserAD = username[1];
return user;
}
现在,我知道searcher.PropertiesToLoad
有一个[memberof]
和[adspath]
,最后一个给了我用逗号分隔的名字和姓氏,类似CN="gates, billy"
但是我不想使用子字符串和索引,列表属性中是否有[firstName]
,[lastName]
这样的属性?
我搜索DirectoryEntry
有一个名为givenName
和sn
的属性,但这会返回null
答案 0 :(得分:0)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/switch_off" />
<item android:state_checked="true" android:drawable="@drawable/switch_on" />
</selector>
集正是您需要修改的内容。 Active Directory将仅返回此集合中定义的属性,这就是您没有看到PropertiesToLoad
和givenName
的原因。只需添加这些属性:
sn
或者,只需添加属性searcher.PropertiesToLoad.Add("givenName");
searcher.PropertiesToLoad.Add("sn");
即可加载所有属性:
*