gpt4 book ai didi

c# GroupPrincipal.GetMembers 性能问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:15 26 4
gpt4 key购买 nike

在我们的环境中有两个 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 Group 大约有 700 名成员。重新启动后代码大约需要5-10秒,一段时间后代码大约需要2-3分钟!

谁能帮我解决这个问题?

最好的问候伯恩哈德

最佳答案

尝试

using (var members = grp.GetMembers(true))
{ }

GetMembers 调用返回一个 IDisposable,而您并没有清理它。

请参阅 MS 文档 here .

public class PrincipalSearchResult : IEnumerable, IEnumerable, IDisposable

关于c# GroupPrincipal.GetMembers 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50742267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com