System.DirectoryServices.AccountManagement не работает на сервере - PullRequest
1 голос
/ 17 марта 2010

Я использую System.DirectoryServices.AccountManagement, чтобы найти запись AD вошедшего в систему пользователя. Он отлично работает на сервере VS2008 WebDev на машинах разработчиков.

Но когда мы установили код на сервере разработки (windows server 2008), мы получили ошибку доступа.

И машина разработчика, и сервер разработки являются членами одного домена.

У нас включена олицетворение, поэтому мы подключаемся к AD с теми же учетными данными.

Чего нам здесь не хватает? Почему он работает на компьютере разработчика, а не на сервере разработки?

Фактическое исключение, которое мы получили, было «Произошла ошибка операции».

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

После некоторых исследований я нашел следующую ссылку: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/c314650a-ff5e-49e6-8f53-9a7cca17e806

В нем один пользователь описывает решение проблемы:

Я видел эту ошибку, и это связано с тем, что при использовании аутентификации NTLM и олицетворения, установленного в true в web.config, IIS не может использовать аутентифицированный токен против другого сервера, поскольку это «вторичный токен».

Решением моей проблемы было обернуть мой код Active Directory следующим текстом:

 using( HostingEnvironment.Impersonate() )
 {
    //Active Directory search goes here.
 }

Это делает вызов AD с идентификатором пула приложений, и в моем случае это помогло.

0 голосов
/ 29 апреля 2010

Я просто искал, чтобы исправить ошибку System.DirectoryServices.DirectoryServicesCOMException

после использования UserPrincipal.FindByIdentity

и ответ от mlsteeves был тем, что мне было нужно, олицетворяя среду на рабочем сервере!

Так что хороший вызов был о делегировании на сервер, и ваше решение было идеальным, спасибо!

...