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