.Net Directory Services выбрасывает странное исключение

У меня есть небольшое С# решение, используемое для проверки учетных данных пользователей. Он отлично работает для двух моих товарищей по команде, но на моем ПК я получаю исключение.

Соответствующий код:

PrincipalContext context = new PrincipalContext(ContextType.Domain);
if (context.ValidateCredentials(System.Environment.UserDomainName + "\\" + usr, pwd))
     return true;
else
     return false;

И исключение:

DirectoryOperationException: "Сервер не может обрабатывать запросы каталога".

Я попытался создать контекст с явным именем сервера и номером порта 636, но это тоже не помогло.

Любые идеи?

Ответ 1

У меня была эта проблема: все работало на моей машине dev, но не работало на сервере. Оказалось, что IIS на сервере настроен на работу как LocalMachine. Я изменил его на NetworkService (по умолчанию), и все стало работать.

Так что в основном проверьте пользователя пула приложений, если он работает в IIS.

Ответ 2

У меня тоже была эта проблема с использованием IIS Express и VS 2010. Для меня это был комментарий к другому потоку.

Подтвердить имя пользователя и пароль в Active Directory?

но я сохраню вам клик и поиск...:) Просто добавьте ContextOpations.Negotiate к вам Подтвердите учетные данные, как показано ниже.

bool valid = context.ValidateCredentials(user, pass, ***ContextOptions.Negotiate***);

Ответ 3

Мне нужно было просто создать новый пул приложений и назначить его .NET 2.0, а затем назначить новый пул приложений нашему веб-приложению, и он начал работать. У нас был .NET 3.5 SP2, поэтому исправление не было идеальным для нас. Поскольку служба WWW обычно является локальной системой, я тоже это задал. Но так как это был .NET и связанный с безопасностью, я сначала сделал снимок в пуле приложений, и он сработал.

Ответ 4

Возможно, вам нужно исправление?

И вы являетесь администратором или идентификатором, на котором работает ваша служба, является администратором на вашем ПК?

Я так понимаю, вы уже рассмотрели это:

"Вы можете получить менее полезное исключение DirectoryOperationException (" Сервер не может обрабатывать запросы каталога "). Что не так забавно в том, что он даже не пытался связаться с сервером. Решение заключалось в том, чтобы добавить номер порта на сервер. Поэтому вместо передачи" Server "для открытия LdapConnection я передал" server: 636". Кстати, LDAPS - это порт 636, а не порт 389, используемый LDAP.


Хорошая точка, я бы не ожидал, что Win7/.NET 3.5 понадобится для этого патча. Как насчет информации, представленной в этом вопросе: