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
アップデート
アプリケーション プールの ID を "ApplicationPoolIdentity" から "LocalSystem" に変更することで、QA マシンのエラーを解決しました。私の開発ボックスでは、設定は ApplicationPoolIdentity ですが、なぜ権限が異なるのですか? 失敗した機能にはどのようなアクセス許可が必要ですか?
更新 2
私はすべての選択肢を使い果たしました。ローカルの Administrators グループのユーザー アカウントを使用しても役に立ちません。機能する唯一のことは、アプリケーション プールを LocalSystem として実行することです。他の何人かの人々もこの問題を抱えていました(ここに文書化されています)どんなアイデアでも大歓迎です。ありがとう。