Настройка 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 (который упоминается в ошибке источника конфигурации) написан неправильно. Кто-нибудь может это подтвердить? Мне не удалось найти примеры файлов 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]" />
из списка From: затем нажмите Unlock Section:
/commit:apphost
переключите версию командной строки и ApplicationHost.config <location path=...
Расположение в версии GUI гарантирует, что этот раздел разблокирован в IIS applicationHost.config
файл, а не в вашем web.config
, Это означает, что менее вероятно, что он будет отменен при скольжении клавиатуры, когда кто-то редактирует web.config
file`.
Под капотом это добавляет <location>
элемент, который выглядит как:
<location path="[SITENAME]" overrideMode="Allow">
<system.webServer>
<handlers />
</system.webServer>
</location>
Однако, прежде чем сделать это, я бы попытался удалить оскорбительную строку в вашем web.config
сначала файл, но я подозреваю, что isapi_redirect.dll
должен быть исполняемым.