2011-08-17 31 views
0

我想與使用System.DirectoryServices.AccountManagement東西的Active Directory系統集成。我們的IT人員已經建立了一個AD框,我的開發箱不是這個(或任何)域的一部分。無法找到用戶或組與System.DirectoryServices.AccountManagement

到目前爲止,我有3行代碼作爲測試:

var pc = new PrincipalContext(ContextType.Domain, "machine", "CN=Administrator,CN=Users,DC=domain,DC=com", "Password"); 

    var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "Administrator"); 

    var gp = GroupPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "Admins"); 

創建PrincipalContext工作上面列出,但如果我嘗試使用,而不是服務器名稱的域名,然後我得到一個錯誤:服務器無法聯繫。所以,我把它留在了機器名上。

獲取用戶或組時,出現錯誤:發生本地錯誤。

對於用戶來說,我也用同樣的結果嘗試這樣做:

var user = UserPrincipal.FindByIdentity(pc, IdentityType.DistinguishedName, "cn=Administrator,ou=users,dc=domain,dc=com"); 

因此,總體而言,我很困惑:(

沒有人有任何建議

作爲?注意,我想踢一個認爲'發生本地錯誤'的程序員將是一個有用的錯誤信息!

乾杯

PS:我可以在我的機器上使用SysInternals AD Explorer,我可以看到我正在嘗試使用的dn。

PPS:如果我在創建PrincipalContext時使用machine.domain.com作爲名稱,它也無法連接。

回答

5

因此,這是在您進入解決方案之後非常有意義的事情之一。問題在於上下文試圖使用未配置的協商安全上下文。當我用SimpleBind它工作得很好:

var pc = new PrincipalContext(ContextType.Domain, "machine", "DC=domain,DC=com", ContextOptions.SimpleBind, "CN=Administrator,CN=Users,DC=domain,DC=com", "Password"); 

乾杯

PS:一個更有用的錯誤信息會救我天撓頭!

相關問題