c#GroupPrincipal.GetMembers 性能问题

在我们的环境中有两个 AD 域:DomainA 和 DomainB。从 DomainB 到 DomainA 有一种单向信任方式。


我们使用以下代码从域中的服务器中列出域 A 中 AD 组的所有用户(我们使用域 A 中的用户作为主体上下文):


using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DomainA", "DomainA\\user", "pwd");

{

    using (GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, "DomainA\\DomainGroup"))

    { 

        var members = grp.GetMembers(true);


        foreach (Principal p in members)

        {

            string email = string.Empty;

            UserPrincipal u = p as UserPrincipal;


            if (u != null)

            {

                email = u.EmailAddress;

            }


            if (!String.IsNullOrEmpty(email) && !users.Contains(email))

            {

                users.Add(email);

            }

        }

    }

}

此代码在 IIS Web 服务中执行。


在 DomainB 中重新启动服务器后,代码运行良好,但经过几次尝试后,代码变得非常慢。AD集团约有700名成员。重新启动后代码大约需要5-10秒,一段时间后代码大约需要2-3分钟!


谁能帮我解决这个问题?


潇潇雨雨
浏览 186回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP