Я получил следующий фрагмент (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);
}
Он печатает ОК для первых 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
).
Может кто-нибудь объяснить, почему?
Обновление3
Это работает, если я поставлю полное доменное имя для элемента: LDAP://srv00014.ssab.com/CN=SomeName,xxxx
Bounty
Я ищу ответ, который касается следующего:
- Почему
entry.Properties["customAttributeName"]
не удается с упомянутым исключением - Почему
entry.InvokeGet("customAttributeName")
работает - Причина исключения
- Как заставить работать оба