Tomcat

IIS 7.5 和 Tomcat 設置:錯誤 500.19

  • July 23, 2012

我正在設置一個 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 的管理控制台中執行此操作:

  1. 導航到該站點並啟動配置編輯器小程序/功能:

在此處輸入圖像描述 2. 在 Configuration Editor中,從system.webServer/handlersSection 列錶框和From:列錶框中選擇,然後點擊Unlock SectionApplicationHost.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需要是可執行的。

引用自:https://serverfault.com/questions/410147