Назад | Перейти на главную страницу

Установка 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 и worker.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. В редакторе конфигурации выберите system.webServer/handlers из списка разделов и ApplicationHost.config <location path="[SITENAME]" /> из Из: список, затем щелкните Разблокировать раздел:

В /commit:apphost переключатель в версии командной строки и ApplicationHost.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 должен быть исполняемым.