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

Пользовательская страница ошибки 404 IIS 7.0 и файл web.config

У меня проблема с настраиваемой страницей ошибки 404.

У меня есть домен, в котором запущен проект .NET с собственной обработкой ошибок. У меня работает web.config для домена, который содержит:

<customErrors mode="RemoteOnly">
    <error statusCode="500" redirect="/Error"/>
    <error statusCode="404" redirect="/404"/>
</customErrors>

В подкаталоге этого домена я игнорирую все маршруты, выполняя routes.IgnoreRoute("Assets/{*pathInfo}"); в проекте .NET, и я хочу разместить настраиваемую страницу с ошибкой 404 для этого и любого подкаталога Assets. Вложенный каталог содержит статический контент, такой как изображения, CSS, js и т. Д. И т. Д.

Поэтому в разделе «Страницы ошибок» IIS я поместил перенаправление на абсолютный URL-адрес.

Web.config для этого каталога выглядит следующим образом:

<system.webServer>
    <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="http://mydomain.com/404" responseMode="Redirect" />
    </httpErrors>
</system.webServer>

Но я перехожу к неизвестному URL-адресу в этом каталоге, но все же вижу страницу IIS 404 по умолчанию.

Я также вижу предупреждение в IIS, которое гласит:

Вы настроили подробные сообщения об ошибках, которые будут возвращаться как для локальных, так и для удаленных запросов. Когда выбран этот параметр, настраиваемая конфигурация ошибок не используется.

Имеет ли это какое-либо отношение к customErrors mode="RemoteOnly" в сайте web.config?

Я попытался перезаписать customErrors в подкаталоге web.config, но ничего не меняется.

Любая помощь будет оценена.

Спасибо.

Вы можете попробовать просто добавить это:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
</httpErrors>

В вашем файле "web.config".

Это может быть немного поздно, однако вы можете указать следующее в system.webserver часть web.config

<system.webServer>
  <httpErrors existingResponse="PassThrough" />
</system.webServer>

Благодарим за эту запись в Stack Overflow: https://stackoverflow.com/questions/434272/iis7-overrides-customerrors-when-setting-response-statuscode