【发布时间】:2014-09-03 01:21:33
【问题描述】:
我需要在DirectorySearcher.FindAll() 中运行foreach 循环并获取displayname 属性。似乎存在内存问题(参考链接:Memory Leak when using DirectorySearcher.FindAll())。
我的代码如下:
List<string> usersList = new List<string>();
string displayName = string.Empty;
try
{
using (DirectoryEntry directoryEntry = new DirectoryEntry(ldap, userName, password))
{
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
directorySearcher.PageSize = 500; // ADD THIS LINE HERE !
string strFilter = "(&(objectCategory=User))";
directorySearcher.PropertiesToLoad.Add("displayname");//first name
directorySearcher.Filter = strFilter;
directorySearcher.CacheResults = false;
SearchResult result;
var resultOne = directorySearcher.FindOne();
using (var resultCol = directorySearcher.FindAll())
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("displayname"))
{
displayName = (String)result.Properties["displayname"][0];
usersList.Add(displayName);
}
}
}
}
}
是否有任何可能的循环方式。我也尝试过调用Dispose() 方法,但它不起作用。非常感谢任何帮助。
【问题讨论】:
标签: c# asp.net directoryservices adsi