Я переопределяю Application_AuthenticateRequest
, чтобы заменить пользователя, прошедшего проверку подлинности Windows, другим пользователем, которого я программно получаю с помощью вызова LogonUser
. Когда я назначаю результирующий WindowsPrinciple для Context.User , я получаю следующее исключение.Я не получаю это исключение на моей машине разработки (, все работает отлично ), только на моей машине QA. Обе машины — Windows Server 2008 R2. Что-то не так на машине QA, но я не знаю, что это такое.
Вот полное описание того, что я пытаюсь сделать.
[UnauthorizedAccessException: Attempted to perform an unauthorized operation.]
System.Security.Principal.WindowsIdentity.get_AuthenticationType() +317
System.Web.Hosting.IIS7WorkerRequest.SetPrincipal(IPrincipal user, IntPtr pManagedPrincipal) +106
System.Web.HttpContext.SetPrincipalNoDemand(IPrincipal principal, Boolean needToSetNativePrincipal) +9022044
System.Web.HttpContext.SetPrincipalNoDemand(IPrincipal principal) +6
System.Web.HttpContext.set_User(IPrincipal value) +36
MyProj.MvcApplication.OverrideLoginUser() in C:\Data\Project\MyProj\Global.asax.cs:317
MyProj.MvcApplication.Application_AuthenticateRequest(Object sender, EventArgs e) in C:\Data\Project\MyProj\Global.asax.cs:305
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Я устранил ошибку на компьютере QA, изменив идентификатор пула приложений с «ApplicationPoolIdentity» на «LocalSystem». В моем поле Dev параметр ApplicationPoolIdentity, так почему же привилегии разные? Какие разрешения требуются для отказа функции?
Я исчерпал все свои варианты. Не помогает даже использование учетной записи пользователя в локальной группе администраторов. Единственное, что работает, — это запуск пула приложений как LocalSystem. У некоторых других людей также была эта проблема (. задокументировано здесь)Любые идеи приветствуются. Спасибо.