Tôi có đoạn sau (SomeName
/SomeDomain
chứa các giá trị thực sự trong mã của tôi)lỗi ActiveDirectory 0x8000500c khi đi qua thuộc tính
var entry = new DirectoryEntry("LDAP://CN=SomeName,OU=All Groups,dc=SomeDomain,dc=com");
foreach (object property in entry.Properties)
{
Console.WriteLine(property);
}
It in OK cho 21 khách đầu tiên, nhưng sau đó thất bại với:
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
Tại sao? Làm thế nào tôi có thể ngăn chặn nó?
Cập nhật
Đó là một thuộc tính tùy chỉnh mà thất bại.
Tôi đã cố gắng sử dụng entry.RefreshCache()
và entry.RefreshCache(new[]{"theAttributeName"})
trước khi liệt kê các thuộc tính (không hữu ích).
Update2
entry.InvokeGet("theAttributeName")
công trình (và không có RefreshCache
).
Ai đó có thể giải thích lý do tại sao?
UPDATE3
Nó hoạt động nếu tôi cung cấp các FQDN đến mục: LDAP://srv00014.ssab.com/CN=SomeName,xxxx
Bounty
Tôi đang tìm kiếm một câu trả lời mà giải quyết như sau:
- Tại sao
entry.Properties["customAttributeName"]
không thành công với ngoại lệ được đề cập - Tại sao
entry.InvokeGet("customAttributeName")
làm việc - Nguyên nhân của ngoại lệ
- Làm thế nào để có được cả hai làm việc
Đoán đầu tiên của tôi lúc _why_ sẽ là quyền. Bạn đang chạy theo ngữ cảnh nào? –
@ Mr.Disappointment: Chỉ cần thử với một tài khoản cần có đủ đặc quyền. Không có sự khác biệt: ( – jgauffin
Bạn có thể thử chỉ định thông tin xác thực 'Thiên Chúa' một cách rõ ràng thông qua hàm tạo không? Chỉ cần kiểm tra tính chính xác. –