文章目錄
解決無法使用 IIS Manager 及 AppCmd.exe 列出 Worker Processes 的 Request
最近監控 IIS 上的 application 時發現部份 server 無法列出 request queue,以我的經驗一般情況下並不會特別去看 request queue 的內容,一旦需要看就一定有 server 或是 application 警示出現,如果看不到內容對於除錯就少了可以快速定位發生原因的手段,也就增加偵錯的時間
原本以為是 IIS Manager GUI 的問題,改用 AppCmd.exe 來看內容也出現錯誤,就來看看如何解決吧
關於 AppCmd.exe
從 IIS 7 開始加入的命令列工具,可以用來管理 IIS 的重要功能
- 建立及設定 sites, apps, application pools, 跟 virtual directories
- 啟動及停止 sites 與回收 application pools
- 列出執行中的 worker processes 與檢查執行中的 request
- 搜尋、管理、匯出及匯入 IIS 與 ASP.NET 的設定
路徑
未加入環境變數,需切換至所在路徑或是使用完整路徑
%systemroot%\system32\inetsrv\
基本語法
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*
語法詳細介紹請參考 Getting Started with AppCmd.exe
問題描述
使用 IIS Manager
開啟 IIS Manager –> 選擇目標 Server –> Worker Processes
點擊目標 Application Pool Name 無法顯示 Requests queue (完全沒有反應,也沒有錯誤提示)
使用 AppCmd.exe
- 執行
appcmd.exe list requests TestTimeout
- 錯誤訊息
訊息內容
ERROR ( hresult:80004001, message:Command execution failed. Not implemented )
錯誤截圖
- 執行
解決方式
Windows 10
開啟
Turn Windows features on or off
Internet Information Services –> World Wide Web Services –> Health and Diagonostics –>
Request Monitor
,Tracing
Windows Server
Server Manage –> Manage –> AddRoles amd Features
Installation Type –> Role-based or feature-based installation
Service Roles –> Web Server(IIS) –> Health and Diagnostics –>
Request Monitor
,Tracing
效果
- IIS Manage GUI
AppCmd.exe
appcmd.exe list request /elapsed:3000
心得
經過設定 IIS 的 Health and Diagnostics 後,已經確認解決問題了,也才還 IIS Manage GUI 的清白 XD 不過一開始發現 IIS Manage GUI 無法查詢又沒有任何訊息,純粹只是無法開啟 request queue 時我真心覺得是 IIS Manage GUI 的問題,直到 AppCmd.exe 拋出錯誤時我才覺得可能是資料來源出問題
雖然 google 一下就可以發現 Error hresult :80004001 , message : Command execution failed. Not implemented 有正確解決方法,但 IIS Manage GUI 沒有出現任何訊息與 AppCmd.exe 模糊的錯誤訊息,對於解決問題幫助不大呀
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。