PrincipalContext如何知道要使用的LDAP服务器

时间:2016-06-03 13:30:45

标签: vb.net ldap

使用VB.NET,不带参数的PrincipalContext。据我所知,当调用ValidateCredentials时,它将使用调用服务器的凭据,就像在我的情况下运行ASP.NET应用程序池的帐户一样。我的问题是,它如何知道要检查哪个LDAP服务器?这并没有在任何地方指定,只是似乎工作。问题是,我们正在实施第二个LDAP服务器以进行测试。有些东西告诉我这需要新的编码来包含特定的服务器细节。

1 个答案:

答案 0 :(得分:0)

如果未提供name参数,则使用的LDAP服务器是运行应用程序的计算机(IIS服务器)也已连接的服务器。就如此容易。

您可以随时使用

获取域名
Environment.GetUserDomainName

要实现一个连接的域可能与默认情况不同的场景,我会创建一个Appsetting,为了简单起见,我们将其称为,然后使用该设置的值(如果找到)连接到正确的LDAP服务器。

如果值为空或不可用,则可以使用 Environment.GetUserDomainName 提供的默认域名。

using Context as new PrincipalContext(ContextType.Domain,GetDomainName())
'Do something        
End Using

以下是GetDomainName()函数,用于检查 appsetting是否存在,并在找到时使用它。

Public Function GetDomainName() As String

    Try
        Dim ConfigDomain As String = ConfigurationManager.AppSettings("Domain")
       If Not String.IsNullOrWhiteSpace(ConfigDomain) Then
            Return ConfigDomain
        Else
            Return Environment.UserDomainName
        End If
    Catch ex As Exception
        Return Environment.UserDomainName
    End Try

End Function