Я не уверен, что это заходит слишком далеко на территорию системного администратора, но я все равно задам свой вопрос :)
Я разрабатываю веб-сайт в 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 identityValue)
Странно то, что:
- Эта операция выполняется успешно на приемочном тестовом сервере (та же конфигурация, тот же домен, тот же пользователь пула приложений, другой компьютер).
- Эта операция завершается успешно в консольном приложении после использования удаленного рабочего стола для подключения к рабочему компьютеру под пользователем, запускаемым пулом приложений ASP.NET.
- Операция выполняется со случайной рабочей станции с обычной учетной записью домена.
- Сбой операции на веб-сайте рабочего сервера.