由于AD级别的一些变化,我必须在我的应用程序中更改AD中的查找。现在必须在2个不同的OU中执行搜索,而不是1。
此时我会进行第二次搜索,如果第一次没有返回任何内容。
是否可以将2个路径合并为1,因此必须只搜索一次?
THX。
using (var de = new DirectoryEntry())
{
de.Path = "LDAP://OU=ou1,OU=Users,OU=BE,DC=dc,DC=sys";
de.AuthenticationType = AuthenticationTypes.Secure;
var deSearch = new DirectorySearcher
{
SearchRoot = de,
Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))"
};
var result = deSearch.FindOne();
if (result == null)
{
//User not found in ou1
de.Path = "LDAP://OU=ou2,OU=Users,OU=BE,DC=dc,DC=sys";
de.AuthenticationType = AuthenticationTypes.Secure;
deSearch = new DirectorySearcher
{
SearchRoot = de,
Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))"
};
result = deSearch.FindOne();
if (result==null) return null;
}
using (var deUser = new DirectoryEntry(result.Path))
{
//Do something
}
}
答案 0 :(得分:1)
将基础对象更改为OU=Users,OU=BE,DC=dc,DC=sys
,使用相同的过滤器,使用范围sub
或one
(取决于数据在组织单位下的位置)。有关搜索目录的详细信息,请参阅“LDAP: Using ldapsearch”和“LDAP: Programming Practices”。