Server.Transfer ("error_404.aspx") в Application_Error возвращает пустую страницу - PullRequest
2 голосов
/ 27 марта 2010

Я ищу 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

Я могу пройти по этому коду и подтвердить, что он попадает в Server.Transfer («error_404.aspx»), а также в Page_Load error_404.aspx, но все, что он показывает, это пустая страница.

Ответы [ 3 ]

4 голосов
/ 28 марта 2010

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

0 голосов
/ 27 марта 2010

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

Server.Transfer не подходит для этого. Попробуйте с Response.Redirect . Это должно работать.

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

0 голосов
/ 27 марта 2010

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

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

...