只有累積,沒有奇蹟

2019年1月13日 星期日

[.NET] 檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足

問題
假日在自己練習要透過 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()
從 MSDN 可以得知 UnauthorizedAccessException 為 當作業系統因為 I/O 錯誤或特定類型的安全性錯誤而拒絕存取時,所擲回的例外狀況研判是因為權限不足導致此錯誤發生,此專案是在本機 IIS 自行建立應用程式,我們可以透過工作管理員得知執行 w3wp.exe 的使用者是 DefaultAppPool,預設的身分只有用戶權限權限較低在設計上是安全以確保不會因為漏洞而權限大開
在 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 : 其具有低層級的存取權限。 您不需要在遠端電腦上的資源的存取權的情況下使用此設定。

Step 4 : 選擇 LocalSystem,按下確定

在重試一次即可正常使用,宣告結案 !!

參考
Application Pool Identities
step-1-configure-application-pool-identity

Related Posts:

  • [IIS] 如何解決網站第一個請求 Request 特別慢 ?問題 相信大家都有類似的經驗,在寫完的 Code 佈署到 IIS 開好網頁要準備要進入網站要測試時,網站的第一個請求總是特別慢,尤其是開發已久的程式要在 Production 驗證時心情總是特別緊張,這等待的時間更是讓人很煎熬(不知道會不會爆炸 XD),如何加速網站第一個 Request 呢 ? 過去待過的公司會在佈署完後透過 Jenkins 去打 Server 來 "喚醒" 它,在此簡單記錄一下如何透過 IIS 設定加速網站第一個 Reques… Read More
  • [VisualStudio] Unable to connect to web server 'IIS Express'問題  今天開發 .NET Core 一半忽然發生整個應用程式 hang 住不動,接著 Visual Studio 自動關閉重新啟動,啟動後心想沒事就開始繼續 Alt+F5 繼續偵錯,過沒多久就跳出提示視窗顯示訊息   "Unable to connect to web server 'IIS" ,接著就啟動跳針模式一直重開 VS & 然後跳出訊息文字,像是寫迴圈沒有加… Read More
  • [PowerShell] 設定 IIS - 建立 Application Pool、WebSite前言 PowerShell是微軟公司開發的任務自動化和組態管理框架,相信有接觸過 CI / CD 的人都是聽過且用過這工具,今天就來簡單介紹如何使用 PowerShell 來建立 Application Pool 跟 WebSite 的過程 指令說明 輸入指令 相關指令可以參考 WebAdministration # import module Import-Module WebAdministration cd IIS:\AppPoo… Read More
  • [.NET] 檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足問題 假日在自己練習要透過 WebAPI 對 IIS Server 進行 App Pool 的操作,呼叫寫好的 API 接口時一直噴錯誤,檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足,這篇文章簡單紀錄處理問題過程 處理方式 An error has occurred. 檔案名稱: redirection.config 錯誤: 無法讀取設定檔案,因為權限不足 System.UnauthorizedA… Read More
  • [.NET] 使用 WebAPI 回收 Application Pool 說明 最近常聽維運同仁在群組提到某應用程式在尖峰時間 CPU 與 Memory 持續飆高,處理方式都是通知 RD 同仁連回公司將 App Pool 進行回收的動作,雖然可以暫時解決問題但如果提供工具讓維運同仁可以自行回收的動作,相信可以讓雙方節省更多的時間,這種方式屬於 work around,如果很頻繁發生代表 Code 有問題要找出 root cause 才是正解  Recyle Application 以下就簡單介… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com