【问题标题】:Active Directory LDAP connection using System.DirectoryServices - The server is not operational使用 System.DirectoryServices 的 Active Directory LDAP 连接 - 服务器无法运行
【发布时间】:2021-12-06 10:44:12
【问题描述】:

我正在开发一个通过 Active Directory 使用某种单点登录的应用程序。

就我而言,我正在尝试让一些组查看用户是否是其中的成员。

有时,我会收到以下错误:

服务器无法运行

DirectoryEntry 对象是这样创建的:

using(DirectoryEntry ldapConnection = new DirectoryEntry(ldapDomain))
{ Path = ldapPath, AuthenticationType = AuthenticationTypes.Secure }

ldapDomainx.y.corpldapPath

LDAP://OU=someAppId,OU=someGroupName,OU=someClusterName,OU=someResourceName,DC=x,DC=y,DC=corp 

在与 AD 团队进行一些分析后,我们发现控制器已从 x.y.corp 域中删除,但由于某种原因,域控制器仍在重定向到它,但服务器已关闭。这会生成如上所示的错误消息。

我的问题是:

  • 我这边是否有任何可能的重试机制或错误处理? (异常现在确实被捕获,但被进一步抛出)
  • 有没有办法通过后端代码告诉域控制器不再使用服务器?
  • DirectoryEntry 的构造有问题吗?是否可以一次请求一个“DC”参数并重定向到域外...?
  • 我这边有用于域控制器的缓存吗?

谢谢!

【问题讨论】:

    标签: c# .net active-directory ldap


    【解决方案1】:

    这是您的管理员需要解决的问题。听起来 DNS 仍在为停机的 DC 做广告。您可以通过在命令行中输入以下内容来确认:

    nslookup x.y.corp
    

    每次您进行查找时,DNS 查找都会以不同的顺序显示多个 IP。先出现的那个就是被使用的那个。

    如果停用的 DC 的 IP 地址仍然显示在列表中,那么他们需要修复它。您在代码中所做的任何事情都只是为了解决原本不应该发生的事情。

    【讨论】:

    • 感谢您的回答。经过数小时的分析,我发现问题出在绑定请求上。出于某种原因,对 y.corp 而不是 x.y.corp 进行了绑定...从我的角度来看,无法解决此问题...
    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多