Сервер.Передача (“ошибка_404.aspx”) в Application_Error возвращает пустую страницу

StackOverflow https://stackoverflow.com/questions/2527931

Вопрос

Я ищу HttpExceptions в подразделе Application_Error моего global.asx

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

        Dim ex As Exception = HttpContext.Current.Server.GetLastError()

        If ex IsNot Nothing Then
            If TypeOf (ex) Is HttpUnhandledException Then
                If ex.InnerException Is Nothing Then
                    Server.Transfer("error.aspx", False)
                End If
                ex = ex.InnerException
            End If

            If TypeOf (ex) Is HttpException Then
                Dim httpCode As Integer = CType(ex, HttpException).GetHttpCode()
                If httpCode = 404 Then
                    Server.ClearError()
                    Server.Transfer("error_404.aspx", False)
                End If
            End If
        End If
End Sub

Я могу пошагово просмотреть этот код и подтвердить, что он действительно попадает на Сервер.Передача ("error_404.aspx"), а также загрузка страницы error_404.aspx, но все, что она показывает, - это пустая страница.

Это было полезно?

Решение

Вы очищаете буфер ответов?Вы понятия не имеете, что там уже есть, поскольку вы делаете это в универсальном приложении Application_Error .Сервер.Transfer просто добавляет все, что генерирует новая страница, к существующему ответу.Очевидно, что это может создать некоторые проблемы.

Другие советы

Сработает ли это, если вы измените Server.Transfer к a Response.Redirect?(Возможно, вам придется использовать префикс HttpContext.Current из того места, где вы находитесь в global.asax.)

Я не уверен, что сервер.Передача - хорошая идея в контексте того, что вы делаете, поскольку вы фактически просите IIS отобразить глобальный URL-адрес.asax в браузере.

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

Сервер.Передача это не очень хороший метод для этого.Попробуйте с Ответ.Перенаправление.Это должно сработать.

Если у вас есть какое-либо исключение, есть ли какие-либо требования для сохранения состояний?Если нет, пойдите с Response.Redirect.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top