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

Что заставило бы страницу Custom 404 внезапно перестать работать и вместо этого отобразить 500?

У меня есть кастомная страница 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, чтобы добавить то, что вам нужно.