Ошибка ActiveDirectory 0x8000500c при просмотре свойств

Я получил следующий фрагмент(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")работает
  • Причина исключения
  • Как заставить оба работать
5
задан jgauffin 20 March 2012 в 08:24
поделиться