Пользовательские ошибки Web.config не работают для 404 - PullRequest
1 голос
/ 08 апреля 2011
<customErrors mode="On" defaultRedirect="~/Error.aspx">
    <error statusCode="500" redirect="~/500/"/>
    <error statusCode="404" redirect="~/404/"/>
</customErrors>

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

~/egerg.aspx
~/wf92734eg.aspx

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

1 Ответ

1 голос
/ 04 января 2014

Это решение работает на моем веб-сайте, который составляет 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.

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

...