Настройка 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:

  1. Перейдите на сайт и запустите апплет / функцию редактора конфигурации:

    введите описание здесь

  2. В редакторе конфигурации выберите 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 должен быть исполняемым.

Другие вопросы по тегам