我試圖綁定到Active Directory服務器在C#中,但在現場我似乎已經在測試環境中不能重現的問題。無法連接到AD沒有專門連接到DC
我發現了一個異常
System.Runtime.InteropServices.COMException (0x8007203A): The server is not operational.
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.RefreshCache()
at System.DirectoryServices.DirectoryEntry.FillCache(String propertyName)
at System.DirectoryServices.DirectoryEntry.get_NativeGuid()
的代碼看起來像這樣
// domainStr = "LDAP://domainname/rootDSE
using (var de = new DirectoryEntry(domainStr, Username, Password))
{
var guid = de.NativeGuid;
}
但是如果我嘗試連接的域控制器,而不是(domainStr = "LDAP://domainController/rootDSE"
或完全合格domainStr = "LDAP://domainController.DomainName"
),它工作得精細。
我試圖
var d = Domain.GetDomain(new DirectoryContext(
DirectoryContextType.Domain,
domainStr,
Username,
Password));
但這樣做,當我得到完全相同的異常。
我想知道如果我做錯了什麼,也許不同的LDAP URL會更好地工作,或者如果這是我在(即使谷歌搜索帶來了這個問題一個共同的問題我還沒有找到一個解決方案這對我很有用)
另外它可能值得指出的是,運行該軟件的服務器不在任何Active Directory中,並且我有一個我連接到的AD列表(因此在嘗試使用用戶名和密碼時連接)
是你使用的「現場」是域的成員這臺機器?如果沒有,你需要指定一個特定的域用戶+密碼才能做任何事情。另外,我相信正確的LDAP路徑只是「LDAP:// RootDSE」 - 是否爲您工作? – 2011-03-21 08:02:42
我不確定你是什麼意思!但可以肯定的是,使用C#,即使您的計算機不是Domain的成員,也可以通過指定DCs IP/Name/Address來連接到AD。 – 2011-03-21 09:00:47
該機器不是域的成員(因此我不能只連接到LDAP:// RootDSE)。 但是我在嘗試連接時確實使用了用戶名和密碼,但仍然得到上述異常,除非我明確指定域控制器。 – clows 2011-03-21 11:52:01