IIS 7.5 和 Tomcat 設置:錯誤 500.19
我正在設置一個 64 位 IIS 7.5 / Tomcat 7.0.26 伺服器,當我導航到
http://localhost
-錯誤摘要
HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed because the related configuration data for the page is invalid.
詳細的錯誤資訊
Module IIS Web Core Notification BeginRequest Handler Not yet determined Error Code 0x80070021 Config Error This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false". Config File \\?\C:\Folder\apache-tomcat-7.0.29\jk\web.config Requested URL http://localhost:80/jakarta/isapi_redirect.dll Physical Path C:\Folder\apache-tomcat-7.0.29\jk\isapi_redirect.dll Logon Method Not yet determined Logon User Not yet determined
配置源 (第 4 行以紅色突出顯示)
3: <system.webServer> 4: <handlers accessPolicy="Read, Execute, Script" /> 5: </system.webServer>
我猜測問題在於 web.config 文件(在 Config 源錯誤中提到)寫入不正確。有人可以證實這一點嗎?我還沒有找到要關閉的範例 web.config 文件。
我從另一台正在工作的伺服器上複製了整個 jk 文件夾(包括 isapi_redirect.dll、isapi_redirect.properties、uriworkermap.properties、web.config 和 workers.properties),但是該伺服器的配置與原來不同設置為以不同的方式執行 Tomcat。
解決這個問題的線索在錯誤消息中(IIS 非常擅長解釋 500.19 錯誤,這很好):
此配置部分不能在此路徑中使用。當該部分鎖定在父級別時會發生這種情況。鎖定是預設情況下 (overrideModeDefault=“Deny”),或由具有 overrideMode=“Deny” 或傳統 allowOverride=“false” 的位置標記顯式設置。
這就是說您不能指定配置部分更改(在這種情況下
<handlers accessPolicy="Read, Execute, Script">
是在您的web.config
文件中。您可以通過使用以下命令在站點級別解鎖此部分來解決此問題:
appcmd unlock config "[SITENAME]" -section:handlers /commit:apphost
[SITENAME]
安裝 TomCat 鑽頭的站點的名稱在哪裡。您也可以在 IIS7 的管理控制台中執行此操作:
- 導航到該站點並啟動配置編輯器小程序/功能:
2. 在 Configuration Editor中,從
system.webServer/handlers
Section 列錶框和From:列錶框中選擇,然後點擊Unlock Section:ApplicationHost.config <location path="[SITENAME]" />
/commit:apphost
命令行版本中的開關和ApplicationHost.config <location path=...
GUI 版本中的位置確保此部分在 IISapplicationHost.config
文件中而不是在您的web.config
. 這意味著當有人編輯文件時,它不太可能被鍵盤滑倒撤消web.config
。在引擎蓋下添加的是一個
<location>
看起來像這樣的元素:<location path="[SITENAME]" overrideMode="Allow"> <system.webServer> <handlers /> </system.webServer> </location>
但是,在這樣做之前,我會先嘗試刪除
web.config
文件中的違規行,但我懷疑這isapi_redirect.dll
需要是可執行的。