c# - 为什么我在运行 Response.Redirect() 时会抛出异常?

标签 c# .net asp.net

我正在学习 ASP.NET 并且正在研究 QueryStrings。

我正在查看的一个示例将一个按钮 Hook 到重定向调用:

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            //throws ThreadAbortException: "Thread was being aborted"
            Response.Redirect("Form2.aspx");
        }
        catch (Exception Ex)
        {
            System.Diagnostics.Debug.WriteLine(Ex.Message);
        }
    }

为什么这里会抛出ThreadAbortException?那是正常的吗?我应该为此做点什么吗?异常一般都不是什么好东西,所以看到这里我心惊胆战。

最佳答案

这是设计使然。这KB article描述行为(也适用于 Request.End()Server.Transfer() 方法)。

Response.Redirect() 存在重载:

Response.Redirect(String url, bool endResponse)

如果您传递 endResponse=false,则不会抛出异常(但运行时将继续处理当前请求)。

如果endResponse=true(或者如果您使用不带 bool 参数的重载),将抛出异常并立即终止当前请求。

关于c# - 为什么我在运行 Response.Redirect() 时会抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364645/

相关文章:

c# - 在 C# 中解析和上传 >1GB 的数据

c# - 在 lambda 表达式中的另一个对象列表中获取一个对象列表

javascript - 在 .NET 项目上生成 JSON 后期构建

c# - 更改 gridview 行颜色 ASP.NET

c# - ASP.NET - 如何向服务器发出 AJAX 请求而不得到我拥有的所有更新面板信息的响应?

c# - 是否可以将 Microsoft.Extensions.Configuration 库与 ASP.NET 5 集成?

c# - 通用存储库和事务

.net - 实现IIdentity,什么是AuthenticationType?

.net - 在预构建事件上运行 Visual Studio 2008 宏

asp.net - 如何使用 System.Drawing 绘制透明图像?