Почему приведенный ниже код работает нормально, когда я запускаю свое веб-приложение на локальном хосте, но не работает, когда я устанавливаю его на сервер IIS?
using (HostingEnvironment.Impersonate())
{
UserPrincipal activeUser = UserPrincipal.Current;
String activeUserSid = activeUser.Sid.ToString();
String activeUserUPN = activeUser.UserPrincipalName;
}
Пожалуйста, не предлагайте мне придерживаться HttpContext.Current.User
, так как он не обеспечивает доступ к SID или UPN без дополнительных обращений к Active Directory.
Веб-приложение будет использоваться пользователями, прошедшими проверку подлинности Windows, из трех отдельных доменов, веб-сервер размещен в четвертом домене. Пул приложений настроен для работы под удостоверением NetworkService
, а в конфигурации веб-приложения для олицетворения удостоверения задано значение true.
Сообщение об ошибке при запуске в IIS:
Ошибка в Page_Load(): UserPrincipal.Current.
System.InvalidCastException: невозможно преобразовать объект типа «System.DirectoryServices.AccountManagement.GroupPrincipal» для ввода «System.DirectoryServices.AccountManagement.UserPrincipal».
в System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext контекст, IdentityType identityType, String identityValue)
в System.DirectoryServices.AccountManagement.UserPrincipal.get_Current()
в webapp.Details.Default.Page_Load (отправитель объекта, EventArgs e)
EDIT : Пробовал следующее и, к сожалению, получил ту же ошибку.
UserPrincipal userPrincipal = UserPrincipal.Current;
Response.Write(userPrincipal.Name);
Principal userOrGroup = UserPrincipal.Current;
Response.Write(userOrGroup.Name);