System.DirectoryServices & IIS - получить имя пользователя - PullRequest
0 голосов
/ 15 ноября 2011

Я не уверен, что это заходит слишком далеко на территорию системного администратора, но я все равно задам свой вопрос:)

Я занимаюсь разработкой веб-сайта в MVC3.Сайт использует ограниченное делегирование для олицетворения пользователя в домене Windows и подключения к SQL Server под этим пользователем.Все это работает без проблем.

Я пытаюсь получить доступ к свойству «Отображаемое имя» вошедшего в систему имени пользователя (используя следующий код):

string displayName;
var context = new PrincipalContext(ContextType.Domain, "contoso");
var userPrincipal = UserPrincipal.FindByIdentity(context,
                                  IdentityType.SamAccountName,
                                  userName);
displayName = userPrincipal.DisplayName;

Я получаюОшибка операций LDAP:

Сведения об исключении: System.Runtime.InteropServices.COMException: произошла ошибка операций.
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity (контекст PrincipalContext, IdentityType identityType String identityType, String)

Странно то, что:

  • Эта операция успешно выполняется на сервере приемочных испытаний (та же конфигурация, тот же домен, тот же пользователь пула приложений, другая машина).
  • Эта операция завершается успешно в консольном приложении после использования удаленного рабочего стола для подключения к производственной машине под пользователем, с которым запускается пул приложений ASP.NET.
  • Операция завершается с произвольной рабочей станции с нормальнойУчетная запись домена.
  • На веб-сайте не удается выполнить операциюПроизводственный сервер.

1 Ответ

0 голосов
/ 16 ноября 2011

Я решил это, установив PhysicalPathCredentials веб-сайта для учетной записи.Но я не могу понять причину проблемы, но она работает.

...