假日在自己練習要透過 WebAPI 對 IIS Server 進行 App Pool 的操作,呼叫寫好的 API 接口時一直噴錯誤,檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足,這篇文章簡單紀錄處理問題過程
處理方式
An error has occurred. 檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足 System.UnauthorizedAccessException 於 Microsoft.Web.Administration.Interop.IAppHostAdminManager.GetAdminSection(String bstrSectionName, String bstrPath) 於 Microsoft.Web.Administration.Configuration.GetSectionInternal(ConfigurationSection section, String sectionPath, String locationPath) 於 Microsoft.Web.Administration.ServerManager.ApplicationPoolsSectionCreator() 於 Microsoft.Web.Administration.Lazy.Initialize[T](T& target, CreateInstanceDelegate`1 valueFactory) 於 Microsoft.Web.Administration.ServerManager.ApplicationPoolCollectionCreator() 於 Microsoft.Web.Administration.Lazy.Initialize[T](T& target, CreateInstanceDelegate`1 valueFactory) 於 WebAPI.Controllers.ValuesController.RestartApplication() 於 C:\Users\marcustung\source\repos\WebAPI\WebAPI\Controllers\ValuesController.cs: 行 54 於 lambda_method(Closure , Object , Object[] ) 於 System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1. b__3(Object instance, Object[] methodParameters) 於 System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- 先前擲回例外狀況之位置中的堆疊追蹤結尾 --- 於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 於 System.Web.Http.Controllers.ApiControllerActionInvoker. d__1.MoveNext() --- 先前擲回例外狀況之位置中的堆疊追蹤結尾 --- 於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 於 System.Web.Http.Controllers.ActionFilterResult. d__5.MoveNext() --- 先前擲回例外狀況之位置中的堆疊追蹤結尾 --- 於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 於 System.Web.Http.Dispatcher.HttpControllerDispatcher. d__15.MoveNext()
在 IIS 7.5 之後新增 ApplicationPoolIdentity 虛擬帳戶,改善了過去為了 IIS Application 設定權限定義很多不同的 User Roles 管理問題,詳細介紹可以參考 保哥blog,這次遇到的問題可以透過設定ApplicationPoolIdentity 解決,說明步驟如下
設定 ApplicationPoolIdentity
Step 1 : 開啟 IIS > 選擇應用程式集區 > 選擇要設定的 Application Pool > 按下進階設定
Step 2 : 拉到最下方 > 選擇 識別
Step 3 : 說明可以看到是設定應用程式集區以選擇的方式 其中有四個選項
- Application Pool Identity : 預設是 ApplicationPoolIdentity
- Network Service : 其中包含可用來在遠端電腦上的資源的存取權的低層級的使用者存取權限
- Local System : 這是具有多個與 Network Service 或 Local Service 帳戶的使用者權限的帳戶。
- Local Service : 其具有低層級的存取權限。 您不需要在遠端電腦上的資源的存取權的情況下使用此設定。
在重試一次即可正常使用,宣告結案 !!
參考
Application Pool Identities
step-1-configure-application-pool-identity
0 意見:
張貼留言