Application_Error 中的 Server.Transfer(“error_404.aspx”) 返回空白页

发布于 2024-08-26 22:57:52 字数 955 浏览 11 评论 0原文

我在 global.asx 的 Application_Error 子中查找 HttpExceptions

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") 以及 error_404.aspx 的 Page_Load,但它显示的所有内容是一个空白页。

I look for HttpExceptions in the Application_Error sub of my 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

I can step through this code and confirm it does hit the Server.Transfer("error_404.aspx"), as well as the Page_Load of error_404.aspx, but all it shows is a blank page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

单身情人 2024-09-02 22:57:52

您是否正在清除响应缓冲区?您不知道已经存在什么,因为您是在 Application_Error 包罗万象中执行此操作。 Server.Transfer 只是将新页面生成的任何内容附加到现有的响应上。显然这可能会产生一些问题。

Are you clearing the Response buffer? You have no clue what is already there, since you are doing this in the Application_Error catch-all. Server.Transfer just appends whatever the new page generates onto the existing Response. Obviously this could create some issues.

背叛残局 2024-09-02 22:57:52

如果将 Server.Transfer 更改为 Response.Redirect 是否有效? (您可能必须使用 global.asax 中的 HTTPContext.Current 前缀。)

我不确定 Server.Transfer 在您正在做的事情的上下文中是一个好主意,因为您实际上是要求 IIS 将 global.asax URL 呈现给浏览器。

Does it work if you change the Server.Transfer to a Response.Redirect? (You may have to use the HTTPContext.Current prefix from where you are in global.asax.)

I'm not sure that a Server.Transfer is a good idea in the context of what you're doing, since you're effectively asking IIS to render the global.asax URL to the browser.

少女情怀诗 2024-09-02 22:57:52

我认为如果发生一些错误,Server.Transfer 将不会触发。

Server.Transfer 不是一个好方法。尝试使用 Response.Redirect。它应该有效。

如果有任何例外,维护状态是否有任何要求?如果没有,请使用 Response.Redirect。

I think if some error occurs, Server.Transfer won't fire.

Server.Transfer is not a good method for this. Try with Response.Redirect. It should work.

If you have any exception is there any requirement for maintaining the states? If not, go with Response.Redirect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文