我正在设置 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 文件(在配置源错误中提到)写错了。有人能证实这一点吗?我找不到一个示例 web.config 文件来参考。
我从另一台正在运行的服务器复制了整个 jk 文件夹(其中包括 isapi_redirect.dll、isapi_redirect.properties、uriworkermap.properties、web.config 和 worker.properties),但是该服务器的配置不同,因为它最初设置为以不同的方式运行 Tomcat。
答案1
解决这个问题的线索就在错误消息中(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的管理控制台中执行此操作:
导航到站点并启动配置编辑器小程序/功能:
在配置编辑器中
system.webServer/handlers
,从部分列表框中ApplicationHost.config <location path="[SITENAME]" />
选择从:列表框,然后单击解锁部分:
/commit:apphost
命令行版本中的开关和GUIApplicationHost.config <location path=...
版本中的位置确保此部分在 IIS 的文件中解锁,applicationHost.config
而不是在您的 中web.config
解锁。这意味着当有人编辑文件时,不太可能因为键盘失误而撤消web.config
。
在引擎盖下添加了一个<location>
如下所示的元素:
<location path="[SITENAME]" overrideMode="Allow">
<system.webServer>
<handlers />
</system.webServer>
</location>
不过,在执行此操作之前,我会先尝试删除文件中有问题的行web.config
,但我怀疑该行isapi_redirect.dll
需要可执行。