Ошибка ASP.NET Application Переопределение 404?

голоса
1

Я использую событие Application_Error поймать и ошибки войти мое приложение. Ошибка регистрируется, то отображается дружественный экран сообщение об ошибке:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        Dim ex As New Exception( _
            String.Format(Error on page: '{0}'., HttpContext.Current.Request.Url), _
            Server.GetLastError())

        Dim uid As Guid = Log.FatalError(ex)
        Server.Transfer(String.Concat(~\\GlobalError.aspx?error=, uid))
End Sub

В моем web.config у меня есть:

<customErrors mode=On defaultRedirect=GlobalError.aspx>
  <error statusCode=404 redirect=PageNotFound.aspx />
</customErrors>

Всякий раз, когда пользователь пытается загрузить страницу, которая не существует, они получают страницу GlobalError.aspx, а не страницы PageNotFound.aspx. Я посмотрел в случае Application_Error и обнаружили, что StatusCode ответ был 200, в то время как последняя ошибка сервера была «„foo.aspx“Страница не найдена.»

Что мне нужно сделать, чтобы получить это работает правильно?

Задан 14/07/2009 в 20:31
источник пользователем
На других языках...                            


2 ответов

голоса
0

Для начала, вы должны решить, почему они получают GlobalError.aspx. Вы показали нам две возможности; может быть, есть больше.

Изменение имени одного из этих записей в GlobalErrorX.aspx и посмотреть, что происходит.

Ответил 14/07/2009 в 20:35
источник пользователем

голоса
3

В функции Application_Error вы должны только Server.Transfer, если ошибка не страница не найдена / 404 ошибка. В тех случаях, оставить его в ASP.NET сделать редирект с помощью настроек в web.config.

Вы могли бы понять, если это 404, используя следующее:

Exception ex = Server.GetLastError();
if (ex.GetType() == typeof(HttpException))
{
  HttpException httpEx = (HttpException)ex;
  if(httpEx.GetHttpCode() == 404) {
    return;
  }
}
Server.Transfer("~/error.aspx");
Ответил 14/07/2009 в 20:38
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more