Пользовательские ошибки Web.config не работают для 404

<customErrors mode="On" defaultRedirect="~/Error.aspx">
    <error statusCode="500" redirect="~/500/"/>
    <error statusCode="404" redirect="~/404/"/>
</customErrors>

Это отлично работает для таких запросов, как:

~/egerg.aspx
~/wf92734eg.aspx

Но для любого другого расширения это дает серверу страницу 404! Как я могу перенаправить страницу сервера 404 на мою страницу с ошибкой?


person Tom Gullen    schedule 08.04.2011    source источник
comment
Какую версию IIS вы используете?   -  person Daniel A. White    schedule 08.04.2011
comment
@Daniel IIS 7 в Windows 7 Ultimate   -  person Tom Gullen    schedule 08.04.2011


Ответы (1)


Это решение работает на моем веб-сайте, который на 99% состоит из веб-форм и на 1% из Razor/MVC 4 на .NET Framework 4.

  1. В /Web.config:

    <system.web>
      <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx">
        <error statusCode="500" redirect="~/500/"/>
        <error statusCode="404" redirect="~/404/"/>
      </customErrors>
    </system.web>
    
  2. В событии Page_Load вашего обработчика 404 (я полагаю, /404/default.aspx.cs):

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.StatusCode = 404;
        Response.TrySkipIisCustomErrors = true;
    }
    
  3. Повторите последний шаг для обработчика 500.

  4. Метод Application_Error пуст в /Global.asax.cs.

Это решение очень похоже на этот.

person Theophilus    schedule 03.01.2014