У меня есть кастомная страница 404, написанная на классическом ASP, которая хорошо работала пару лет. Внезапно, вместо того, чтобы видеть, что он ожидал красивого 404, мы видим внутреннюю ошибку сервера 500.
В конфигурации IIS ничего не было изменено (во всяком случае, намеренно).
Это просто у IIS истерика, у которой что-то заканчивается? Может ли перезапуск исправить это? Или это признак чего-то более серьезного?
IIS 7.5 в Windows 2008 R2.
По инициативе Натана Си я удаленно подключился к серверу и запустил его локально, и я получил более подробный ответ об ошибке. Кстати, главный совет: не понимал, что можно получить другой результат на месте!
Кажется, что с конфигом что-то не так.
У меня есть две настраиваемые страницы ошибок, одна для 404 и одна для 410.
На 410 работает нормально.
Подробный ответ об ошибке, кажется, несколько сбивает с толку:
Cannot add duplicate collection entry of type 'error' with combined key
attributes 'statusCode, subStatusCode' respectively set to 410,-1.
Я посмотрел в web.config, и раздел ошибок содержит:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="410" path="/custom410.asp" responseMode="ExecuteURL" />
<error statusCode="404" path="/custom404.asp" responseMode="ExecuteURL" />
</httpErrors>
Мне кажется, что с этой страницей что-то не так. Он ссылается на 404 дважды, а на 410 - только один раз; либо что-то лишнее, либо чего-то не хватает.
Но я не уверен, как это означало смотреть.
Похоже, что уловка сработала:
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="410" subStatusCode="-1" />
<error statusCode="404" path="/custom404.asp"
responseMode="ExecuteURL" />
<error statusCode="410" path="/custom410.asp"
responseMode="ExecuteURL" />
</httpErrors>
.. что подразумевает, что он унаследовал какое-то поведение от более высокого уровня (хотя я проклят, если я вижу где).
В этом смысле это что-то вроде метода грубой силы, так как я до сих пор не совсем уверен, почему он вообще сломался. Может быть, он наследует поведение от глупого дефолт установка (это Microsoft; у них предыдущая).
Спасибо Сэму Моргану из Servwise за то, что указал мне правильное направление.
Как вы заметили, IIS 7 очень требователен к файлам конфигурации. Чтобы исправить, удалите все httpErrors
из web.config, перезагрузите IIS, затем используйте опцию «Страницы ошибок» в диспетчере IIS, чтобы добавить то, что вам нужно.