【发布时间】:2012-07-20 04:47:43
【问题描述】:
我将覆盖Application_AuthenticateRequest 以将Windows 身份验证用户替换为我通过调用LogonUser 以编程方式检索的另一个用户。当我 将生成的 WindowsPrinciple 分配给 Context.User 时,我得到以下异常。我的开发机器上没有这个异常(一切正常),只有在我的 QA 机器上。两台机器都是 Windows Server 2008 R2。 QA 机器上有些不同,但我不知道它是什么。
这是我正在努力完成的full description。
[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
更新
我通过将应用程序池的标识从“ApplicationPoolIdentity”更改为“LocalSystem”解决了 QA 机器上的错误。在我的开发框中,设置是 ApplicationPoolIdentity,那么为什么权限不同?失败的功能需要什么权限?
更新 2
我已经用尽了所有选择。即使使用本地管理员组中的用户帐户也无济于事。唯一可行的是将应用程序池作为 LocalSystem 运行。其他一些人也有这个问题 (documented here) 任何想法表示赞赏。谢谢。
【问题讨论】:
-
您是在开发盒上使用 Casini 进行调试,还是实际上在开发盒上进行部署?
-
我从调试器运行并部署到我的 Dev box 上的 IIS 7.5。两者都工作得很好。
-
你拯救了我的一天 - 不得不将我的 IIS 设置改为 LocalSystem...谢谢
标签: asp.net .net asp.net-mvc windows authorization