C# 从受信任域获取用户列表

C# 从受信任域获取用户列表,c#,cross-domain,C#,Cross Domain,如何从受信任域获取用户列表 我尝试运行LDAP查询,但无法从受信任域获取用户。这是我的代码: public virtual List<UserModel> SearchUsers(string textValue) { var users = new List<UserModel>(); string context; const string nameProperty = "name"; const string samAccountNa

如何从受信任域获取用户列表

我尝试运行LDAP查询,但无法从受信任域获取用户。这是我的代码:

public virtual List<UserModel> SearchUsers(string textValue)
{
    var users = new List<UserModel>();
    string context;
    const string nameProperty = "name";
    const string samAccountNameProperty = "samaccountname";
    const string distinguishedNameProperty = "distinguishedname";

    if (textValue.Contains("(").Equals(true) || textValue.Contains(")").Equals(true) || textValue.Contains("*").Equals(true))
    {
        textValue = EscapeInvalidCharacters(textValue);
    }

    var filterForDomainUser ="(&(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(samaccountname=" + textValue + "*)(name=" + textValue + "*)))";

    using (HostingEnvironment.Impersonate())
    {
        using (var root = new DirectoryEntry("LDAP://RootDSE"))
        {
            context = root.Properties["defaultNamingContext"].Value.ToString();
        }

        using (var entry = new DirectoryEntry("GC://" + context))
        {
            using (
            var search = new DirectorySearcher(entry,filterForDomainUser,
                                                new[]
                                                    {
                                                        samAccountNameProperty, nameProperty,
                                                        distinguishedNameProperty
                                                    }, SearchScope.Subtree))
            {
                search.ReferralChasing = ReferralChasingOption.All;
                search.PageSize = 10;

                var resultCol = search.FindAll();

                for (var counter = 0; counter < resultCol.Count; counter++)
                {
                    var result = resultCol[counter];
                    var distinguishedName = (String)result.Properties[distinguishedNameProperty][0];
                    var domainName =
                        distinguishedName.Substring(distinguishedName.IndexOf("DC=",
                                                                                StringComparison
                                                                                    .InvariantCultureIgnoreCase))
                            .Split(',')[0].Replace("DC=", "");
                    var name = (String)result.Properties[nameProperty][0];
                    var samAccountName = string.Format("{0}{1}{2}", domainName, @"\",
                                                        result.Properties[samAccountNameProperty][0]);

                    var userModel = new UserModel
                    {
                        DisplayName = name,
                        UserName = samAccountName
                    };
                    users.Add(userModel);
                }
            }
        }
    }

    //SearchLocalUser(textValue, users);

    return users;
}
公共虚拟列表搜索用户(字符串textValue)
{
var users=新列表();
字符串上下文;
常量字符串nameProperty=“name”;
常量字符串samAccountNameProperty=“samaccountname”;
常量字符串differencedNameProperty=“differencedName”;
if(textValue.Contains(“(”).Equals(true)| textValue.Contains(“)”).Equals(true)| textValue.Contains(“*”).Equals(true))
{
textValue=转义无效字符(textValue);
}
var filterForDomainUser=“(&(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(samaccountname=“+textValue+”*)(name=“+textValue+”))”;
使用(HostingEnvironment.Impersonate())
{
使用(var root=new DirectoryEntry(“LDAP://RootDSE”))
{
context=root.Properties[“defaultNamingContext”].Value.ToString();
}
使用(var entry=newdirectoryentry(“GC://“+context))
{
使用(
var search=new DirectorySearcher(条目、过滤器或应用程序、,
新[]
{
samAccountNameProperty,nameProperty,
区分名称属性
},SearchScope.Subtree)
{
search.ReferralChasing=ReferralChasingOption.All;
search.PageSize=10;
var resultCol=search.FindAll();
对于(变量计数器=0;计数器