同事報案,.NET 4 WCF在一台新裝Windows 2012 R2主機執行,嘗試連上.svc時出現404.17錯誤:
HTTP Error 404.17 - Not Found
The requested content appears to be script and will not be served by the static file handler.
要求的內容似乎是指令碼,因此靜態檔案處理常式便不會對它進行處理。
依訊息推敲,應是IIS未安裝必要模組所致。
IIS自IIS7起改為模組化安裝,安裝選項分得很細,且盡量以預設不安裝為原則,好處是管理人員可依需要只安裝最精簡組合,用多少裝多少,避免一堆無用模組拖累效能或增加被攻擊風險。但缺點則是安裝時需要較多知識,得看懂選項並找出要安裝的項目。
檢查之後,發現同事裝了.NET Framework 4.5 Features / WCF Services,但忘了勾選 HTTP Activation,即.svc出現HTTP 404.17的主因,問題也在安裝該項目後排除。
面對多如牛毛的安裝選項如果你還是不知如何下手,以下是一些參考文件:
- IIS 7.5 中的可用網頁伺服器 (IIS) 角色服務
非常完整的模組中文說明 - Installing IIS 8.5 on Windows Server 2012 R2
IIS 8.5安裝介紹及模組說明,包含使用DISM/PowerShell批次安裝用的參數名稱 - 使用命令列安裝IIS
使用DISM.exe(註:pkgmgr.exe已過時)
START /WAIT DISM /Online /Enable-Feature /FeatureName:IIS-ApplicationDevelopment /FeatureName:IIS-ASP… - 使用PowerShell安裝IIS
文章有介紹列出可用選項的方法,第二則參考連結亦有提供PowerShell參數