C# 如何使用C语言在没有内存泄漏的情况下获取Active Directory中的用户列表
我在Active Directory中有超过80万条记录。我必须从广告中获取所有用户。但我面临内存泄漏问题 无论如何,我在服务器上运行。为了成功完成任务,它达到了10GB左右的RAM大小 我计划分组获取记录,而不是一次获取所有80万条记录。所有用户按部门分组。因此,我想使用这个department字段来获取记录组。谁能告诉我如何在没有任何内存泄漏问题的情况下实现这一点 下面是我的查询,以按部门获取所有用户。但我找不到从广告中获取独特部门的最佳方法。这将花费更少的时间来执行C# 如何使用C语言在没有内存泄漏的情况下获取Active Directory中的用户列表,c#,memory-leaks,active-directory,C#,Memory Leaks,Active Directory,我在Active Directory中有超过80万条记录。我必须从广告中获取所有用户。但我面临内存泄漏问题 无论如何,我在服务器上运行。为了成功完成任务,它达到了10GB左右的RAM大小 我计划分组获取记录,而不是一次获取所有80万条记录。所有用户按部门分组。因此,我想使用这个department字段来获取记录组。谁能告诉我如何在没有任何内存泄漏问题的情况下实现这一点 下面是我的查询,以按部门获取所有用户。但我找不到从广告中获取独特部门的最佳方法。这将花费更少的时间来执行 public
public void GetUserFromGroup(String Department)
{
try
{
DirectoryEntry entry = new DirectoryEntry("LDAP://" + domainName, userName, passwd, AuthenticationTypes.Secure);
DirectorySearcher dSearch = new DirectorySearcher(entry);
dSearch.PageSize = 1000;
dSearch.Filter = "(&(objectClass=*)(displayname=*)(Department=" + Department + "))";
dSearch.SearchScope = SearchScope.Subtree;
SearchResultCollection src = dSearch.FindAll();
DataTable dt = new DataTable();
dt.Columns.Add("displayname");
foreach (SearchResult sResultSet in src)
{
DataRow dr = dt.NewRow();
if (GetProperty(sResultSet, "displayname") != "")
{
dr["displayname"] = GetProperty(sResultSet, "displayname").ToString();
}
else
{
dr["displayname"] = null;
}
dt.Rows.Add(dr);
}
src.Dispose();
}
catch (Exception ex)
{
throw ex;
}
public static string GetProperty(SearchResult searchResult, string PropertyName)
{
try
{
if (searchResult.Properties.Contains(PropertyName))
{
return searchResult.Properties[PropertyName][0].ToString();
}
else
{
return string.Empty;
}
}
catch (Exception ex)
{
throw ex;
}
}
也许您可以尝试加载所需的属性:
dsearch.PropertiesToLoad.Add("displayname");
执行此任务需要日志时间…请检查是否有名为Associate.txt的文本文件,其中所有active directory用户都可用。如果是这样,那么创建一个存储过程,从该文本文件中检索数据并存储在表中。然后,从您的应用程序中,您可以连接到新创建的表谢谢您的评论。但是在哪里可以找到Associate.txt文件?请与您的团队领导/经理联系。对于所有访问active directory(用于保存itI)的公司,itI具有数据的CSV,并将其批量插入数据库。但是,像displayname这样的字段将有一个逗号作为名称的一部分。我如何解决这个问题,以分离每个字段的值,并将正确的数据插入数据库。