前言
我們使用 iisnode 時,會用到 IIS URLRewrite ,而且需要啟用一些 Server Variables,所以在 Web.Config 中設定 rewrite/allowedServerVariables,如下,
1 | <configuration> |
但在執行網頁時,就會出現「HTTP 錯誤 500.52 - URL Rewrite Module Error.」的錯誤,完整如下,
這個設定區段不能在這個路徑中使用。
當區段在父層級被鎖定時就會發生這種情況。鎖定可能是預設 (overrideModeDefault=”Deny”),
或是由位置標記使用 overrideMode=”Deny” 或繼承的 allowOverride=”false” 明確設定。
解法
手動調整
從訊息來看,直覺的做法是去修改 “C:\Windows\System32\inetsrv\config\applicationHost.config” 中的 rewrite sessionGroup,將裡面的 allowedServerVariables 的 overrideModeDefault 從 Deny 改成 Allow 。
註: 如果修改之後還是出現那個錯誤,請確認是否有權限修改 applicationHost.config 這個檔案哦! 有時無法直接存,要另存到桌面或是其他的目錄,再 Copy 蓋過去哦!
PowerShell
那 PowerShell 要如何修改它呢? 可以參考 Examples of IIS Powershell cmdlets ,直接改它的值,如下,
1 |
|
另外 Garry 大大也提供加到 applicationHost.config 的 location 區段之中,也是可以的哦,如下,
1 |
|
如果出現「The iisnode module is unable to start the node.exe process.」
顯示「The iisnode module is unable to start the node.exe process. Make sure the node.exe executable is available at the location specified in the system.webServer/iisnode/@nodeProcessCommandLine element of web.config. By default node.exe is expected in one of the directories listed in the PATH environment variable.」
那就表示 iisnode 所使用的 應用程式集區 -> 進階設定 -> 載入使用者設定檔 -> 請設定為 true (預設值為 false)
補充說明:
當有多個 msi 檔要透過 msiexec.exe 來安裝時,要使用 -Wait 哦!
最近遇到沒使用 -Wait 時,有些無法安裝成功哦! 例如我要同時裝 Node, iisnde 及 IIS UrlRewrite,
1 |
|
參考資料
Configure-UrlRewriteRules.ps1
Examples of IIS Powershell cmdlets