首页 > 解决方案 > 建议在 Asp.Net Application_Error 处理程序中调用 HttpResponse.Redirect 时将 endResponse 设置为 False 吗?

问题描述

我有一个运行带有 Owin 管道的 .NET Framework 4.7.2 的 Asp.Net Web Forms 应用程序。

在 Application_Error 处理程序中,我在处理程序末尾添加代码以在引发未处理的异常时重定向到自定义错误页面。我在该站点上阅读了很多帖子,这些帖子表明调用Response.Redirect("~/ErrorPage.aspx")就足够了,但是HttpResponse.Redirect 方法的 Microsoft 文档在备注部分指出:

重定向调用End在完成时抛出 ThreadAbortException 异常。此异常对 Web 应用程序性能有不利影响。因此,我们建议您不要使用此重载,而是使用 HttpResponse.Redirect(String, Boolean) 重载并为 endResponse 参数传递 false,然后调用CompleteRequest方法。

那么几个问题:

1)在 Application_Error 处理程序中是否有我不应该像下面这样重定向的原因?

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Other logging code etc removed for brevity

        Server.ClearError()

        Response.Redirect("~/ErrorPage.aspx", endResponse:=False)
        CompleteRequest()
End Sub

2)在页面事件处理程序(例如Page_Load)中,按钮单击事件等......有没有理由我不应该调用endResponse:=False然后CompleteRequest()?或者换句话说,在什么情况下您肯定要确保将endResponse其设置为True

标签: c#asp.netvb.nethttpresponsehttp-redirect

解决方案


推荐阅读