2016-06-03 4 views
0

Использование VB.NET, PrincipalContext без параметров. Я понимаю, что при вызове ValidateCredentials он будет использовать учетные данные вызывающего сервера, например, в моем случае учетная запись пула приложений ASP.NET работает под. Мой вопрос в том, как он знает, на какой сервер LDAP проверять? Это не указано нигде и просто работает. Проблема в том, что мы используем второй сервер LDAP для тестирования. Что-то говорит мне, что для этого потребуется новое кодирование, чтобы включить конкретные данные о сервере.Как PrincipalContext знает, какой сервер LDAP использовать

ответ

0

Используемый сервер 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 
Смежные вопросы