c# - 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
”
希望您的建议
谢谢
解决方案
该 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)
}
};
}
功能上没有区别,只是代码更短。
推荐阅读
- python - Lavalink 收到无效响应 discord.py
- optimization - 如何在新的 roblox 更新中优化克隆
- task - 雪花无服务器任务
- android - 单击时在按钮中实现 if else
- reactjs - 如何使用反应停止 VSCODE 中的标签分离?
- asp.net - 如何在 .NET 中验证对 Discord 交互 webhook 发出的请求?
- elixir - 如何修复依赖项中的透析器 unknown_function 错误?
- intro.js - 您可以在 Introjs 步骤中添加动态内容吗
- python - 如何将函数参数放在双引号中
- javascript - 如何在 javascript 中生成日文文本的 slug?