Службы каталогов .Net выдают странное исключение - PullRequest
21 голосов
/ 12 сентября 2010

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

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

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

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

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

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

Есть идеи?

Ответы [ 4 ]

58 голосов
/ 13 июня 2012

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

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

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

bool valid = context.ValidateCredentials(user, pass, ***ContextOptions.Negotiate***);
6 голосов
/ 29 марта 2011

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

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

2 голосов
/ 27 сентября 2012

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

1 голос
/ 12 сентября 2010

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

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

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

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


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...