Мне нужна корневая группа AD, и мне нужно перечислить все ее подгруппы. У меня есть код, который подключается к серверу AD и пытается получить список подгрупп.
Вот код:
private IEnumerable<SearchResult> GetSubGroups(string groupId)
{
using (var searcher = new DirectorySearcher(new DirectoryEntry(adServerName, adLogin, adPassword)))
{
searcher.Filter = string.Format("(&(objectClass=group)({0}))", groupId);
//Get the Root Group
var result = searcher.FindOne();
object resultMembers = result.GetDirectoryEntry().Invoke("Members", null);
foreach(var member in ((IEnumerable) resultMembers))
{
var memberEntry = new DirectoryEntry(member);
var subgroupsSearcher = new DirectorySearcher(memberEntry);
subgroupsSearcher.Filter = "(objectClass=group)";
subgroupsSearcher.PropertiesToLoad.Add("samaccountname");
subgroupsSearcher.PropertiesToLoad.Add("name");
var foundSubGroupResult = subgroupsSearcher.FindOne();
...
}
return new List<SearchResult> {result};
}
}
При перечислении результатов Invoke («Members», null) я создаю еще один DirectoryEntry для каждого результата.
Проблема в том, что когда вызывается subgroupSearcher.FindOne()
, он заканчивается DirectoryServicesCOMException
.
Here's the exception stack trace:
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_AdsObject()
at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
at System.DirectoryServices.DirectorySearcher.FindOne()
...other methods...
Свойство «Сообщение об исключении» гласит: "An operations error occured"
Я зарегистрировал код ошибки, это -2147016672
Я также попытался неявно инициализировать свойство UserName при создании объекта DirectoryEntry из объекта подгруппы:
foreach(var member in ((IEnumerable) resultMembers))
{
var memberEntry = new DirectoryEntry(member);
memberEntry.Username = adLogin;
var subgroupsSearcher = new DirectorySearcher(memberEntry)
...
}
Но это дало тот же результат.
Что я делаю не так? Любая помощь заметна.