Я получил следующий фрагмент(SomeName
/ SomeDomain
содержит реальные значения в моем коде)
var entry = new DirectoryEntry("LDAP://CN=SomeName,OU=All Groups,dc=SomeDomain,dc=com");
foreach (object property in entry.Properties)
{
Console.WriteLine(property);
}
Он печатает OK для первых 21 свойства, но затем терпит неудачу с:
COMException {"Unknown error (0x8000500c)"}
at System.DirectoryServices.PropertyValueCollection.PopulateList()
at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.PropertyEnumerator.get_Entry()
at System.DirectoryServices.PropertyCollection.PropertyEnumerator.get_Current()
at ActiveDirectory.Tests.IntegrationTests.ObjectFactoryTests.TestMethod1() in MyTests.cs:line 22
Почему? Как я могу предотвратить это?
Обновление
Это пользовательский атрибут, который не работает.
Я пытался использовать entry.RefreshCache()
и entry.RefreshCache(new[]{"theAttributeName"})
перед перечислением свойств (, которые не помогли).
Update2
entry.InvokeGet("theAttributeName")
работает (и безRefreshCache
).
Кто-нибудь может объяснить, почему?
Update3
Это работает, если я предоставлю полное доменное имя элементу:LDAP://srv00014.ssab.com/CN=SomeName,xxxx
Bounty
Я ищу ответ, который касается следующего:
entry.Properties["customAttributeName"]
не работает с упомянутым исключениемentry.InvokeGet("customAttributeName")
работает