2011-06-30 153 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 
} 
相关问题