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

Как настроить файл Web.Config, чтобы разрешить пользовательскую обработку 404, при этом отображая на странице сведения об ошибке 500?

Чтобы настроить обработку 404 на основе предложения хостинговой компании, в настоящее время мы используем следующую настройку web.config. Однако мы быстро поняли, что с этой конфигурацией любая ошибка страницы (ошибка 500) также перенаправляется на эту страницу пользовательской ошибки. Как я могу изменить этот файл конфигурации, чтобы мы могли продолжать обрабатывать ошибку 404 с помощью специального файла, при этом сохраняя возможность просмотра ошибок на странице?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>

Попробуй это -

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom" defaultResponseMode="File" >
         <remove statusCode="404" />
         <remove statusCode="500" />
         <error statusCode="404" 
            path="404.html" />
         <error statusCode="500" 
            path="500.html" />
       </httpErrors>
   </system.webServer>
</configuration>

Страница ошибки 404 - это 404.html, и она находится в моем корне, как и страница 500.

Я обнаружил множество сложных обходных путей для классического ASP в IIS 7.5 для работы с типом пользовательской обработки ошибок IIS 6 для определенного кода ошибки, обычно 404. Я надеюсь, что это поможет людям, которые наткнулись на него.

Я использую IIS 7.5 R2, но думаю, что это применимо к IIS 7 в целом.

Если в вашем файле web.config есть это:

<customErrors mode="On">

... в диспетчере IIS вы, вероятно, выбрали Edit Features в разделе Error Pages, чтобы изменить функции на панели Edit Error Pages Settings. Если вы измените это значение на Custom Error Pages (customErrors mode = "On"), вы будете вынуждены настроить обработку каждого номера ошибки. Так что не делай этого.

Все, что вам нужно сделать, это щелкнуть ПРАВОЙ кнопкой мыши на номере ошибки, которую вы хотите обработать, и выбрать Edit. Там вы можете указать на настраиваемую страницу ошибки, которую вы создаете или перенаправить на URL-адрес. Вместо того, чтобы создавать настраиваемую страницу ошибок, которую вы должны не забывать обновлять при изменении дизайна вашего сайта или меню, я всегда предлагаю перенаправить на домашнюю страницу и добавить что-нибудь в строку запроса, например? Syserror, которую вы затем можете обработать с домашней страницы. Мой метод состоит в том, чтобы проверить это в сценарии домашней страницы и показать дружественное сообщение, сообщающее им, что их страница не найдена, и они были направлены на домашнюю страницу.

Ваш файл web.config будет выглядеть примерно так:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" 
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>

Я также предлагаю вам не включать подробные сообщения об ошибках на рабочем веб-сайте в качестве меры безопасности, даже для локального. Просто посмотрите подробности в своем системном журнале.

Только мои 2 цента, надеюсь, это поможет, и, пожалуйста, дайте мне знать, если вы думаете, что я ошибаюсь в чем-то здесь.

Классический ASP по умолчанию не передает ошибку в IIS7. Чтобы включить это для сайта, запустите следующую команду из командной строки, обязательно заменив {sitename} своим именем site:

c: \ windows \ system32 \ inetsrv \ appcmd.exe установить config "{sitename}" -section: system.webServer / httpErrors / existingResponse: "PassThrough" / commit: apphost

Кроме того, обязательно поверните выключен Ошибки, дружественные к IIS. Они действительно не дружелюбны.

Просто добавьте еще одно значение для 500 ошибок.

<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>