2013-02-20 3 views
2

У меня есть следующий код для проверки пользователя Active Directory (VS2008 на Win7).Подтвердить имя пользователя и пароль для исключения AD.

try 
{ 
    PrincipalContext pc = new PrincipalContext(ContextType.Domain, strDomainName)) 
    isPass = pc.ValidateCredentials(strDomainUserName, strDomainUserPass); 
} 
catch (Exception ex) 
{ 
    Logger.Log("authentiate domain user fail: {0},{1}", ex.ToString(), strDomainUserLoginName); 
} 

Для некоторых пользователей AD, это нормально, но для пользователя AD, я получаю следующее исключение: System.DirectoryServices.Protocols.DirectoryOperationException:The server cannot handle directory requests.

System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(Int32 error) 

System.DirectoryServices.Protocols.LdapSessionOptions.FastConcurrentBind() 

System.DirectoryServices.AccountManagement.CredentialValidator.BindLdap(NetworkCredential creds, ContextOptions contextOptions) 

System.DirectoryServices.AccountManagement.CredentialValidator.Validate(String userName, String password) 

System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password) 

Так же пользовательская настройка домена Active Directory будет вызывать такое исключение?

+0

Отметьте решение этой публикации http://stackoverflow.com/questions/2473222/validatecredentials-returns-false-on-first-call-but-true-on-subsequent-calls – MethodMan

+0

также вы можете посмотреть на это сообщение Stackoverflow posting Я считаю, что он ответит на ваш вопрос .. http://stackoverflow.com/questions/9473314/active-directory-principalcontext-validatecredentials-domain-disambiguation – MethodMan

ответ

1

Извините, мое описание выше неверно. Фактически, вся проверка пользователя AD получит такое исключение.

И рабочая среда: (1) Если код проверки работает на машине, которая является именно машиной AD, тогда код получит такое исключение. (2) В противном случае такого исключения не существует.

Append ContextOptions.Negotiate параметр для ValidateCredentials для решения проблемы.