ValidateCredentials() возвращает FALSE при первом вызове, но TRUE при последующих вызовах.

Я использую следующий код для аутентификации пользователей в моем веб-сервисе:

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, domain))
{
    return context.ValidateCredentials(userName, password);
}

Препятствие, с которым я сталкиваюсь, заключается в том, что первый вызов ValidateCredentials() возвращает false, но последующие вызовы возвращают true. Я поставил точку останова на этой строке и в окне Intermediate вижу те же результаты: первый вызов возвращает false, второй возвращает true, хотя между вызовами (мной) ничего не менялось.

«Домен» - String.Empty, но я также пробовал его с фактическим доменным именем и получил те же результаты.

Я не настолько разбираюсь в администрировании сети, поэтому буду признателен за любую помощь,


person Nick Gotch    schedule 18.03.2010    source источник


Ответы (1)


У меня была аналогичная проблема с программой для управления другими машинными процессами.

У меня был фрагмент кода, который зависает до тех пор, пока метод входа в систему не увенчается успехом:

do
{
}
while(!login(usrname, pass));

это не объясняет, что происходит, но это решило мою проблему...

person Luiscencio    schedule 18.03.2010
comment
Увеличивает ли вызов ValidateCredentials() количество повторных попыток ввода пароля пользователя? (См. заголовок stackoverflow.com/questions/1899724/) Я не хочу непреднамеренно блокировать пользователей, делающих что-то подобное. Если ничего не помогает, я могу сделать что-то подобное со счетчиком сна и попыток в do{}. - person Nick Gotch; 19.03.2010
comment
Это плохо пахнет. Это решило проблему для меня: stackoverflow.com/a/11019430/125406 - person Michael Silver; 29.05.2015