2011-06-30 150 views
0

我搜索了Google幾天,但無法提供任何答案。一週前,我們做了服務器遷移。我們在下面的代碼工作在一臺服務器上的集羣環境,而不是其他的(我不能得到它我的本地機器上運行我們的非羣集開發環境):LDAP中「服務器不可操作」錯誤的可能原因

rootDSE = New DirectoryEntry("LDAP://nonfullyqualifieddomain/RootDSE") 

如果我嘗試上面,我得到了問題標題中提到的一般性錯誤(同樣,它在一臺服務器上工作,但不在另一臺服務器上)。

然而,當我這樣做的DirectoryEntry對象實例化:

rootDSE = New DirectoryEntry("LDAP://fully.qualified.domain", adUserId, adPassword, AuthenticationTypes.Secure) 

根據我在網上看到的,我最好的猜測是,它是與權限或配置,但我不熟悉應用程序的服務器管理端。任何建議,將不勝感激!

+0

是「服務器不可操作」的整個錯誤信息?如果不是,你可以提供整個錯誤信息嗎? –

+0

它使用「服務器不可操作」消息生成System.Runtime.InteropServices.COMException。 –

+0

該異常還應具有ErrorCode屬性(根據http://msdn.microsoft.com/en-us/library/af1y26ew%28v=vs.80%29.aspx)。檢查它是什麼,這可以給我們一些見解。 –

回答

1

每次當我在其中一個基礎架構中使用「服務器不可操作」時,這是因爲我試圖在不良地址上連接LDAP服務器。這是由於:

  • 不正確的DNS解析
  • 壞NetBIOS解析
  • 防火牆過濾

我的建議是使用DNS解析的生產和測試環境,並使用直接IP地址爲開發環境。

請確保389(或636)端口綁定在您使用的地址上,並且您可以連接到該地址。在Windows Server 2008上,LDP.EXE是測試LDAP連接的好工具(存在於W2K3資源工具包中)。在開發計算機上,我使用Apache Directory Studio這也是測試目錄連接和內容的好工具。

0

我在其中一個遺留應用程序中遇到過同樣的錯誤。這是一個內存泄漏問題。爲了解決這個問題,我確保代碼一旦使用它就處置了Directory條目。例如:

using (System.DirectoryServices.DirectoryEntry OUEntry 
    = new DirectoryEntry(domain, userName, userPassword)) 
{ 
    // your code here 
} 
相關問題