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