在使用响应 Response.Redirect()时,获取线程中止异常(Thread Abort Exception )?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (87)

我在UpdatePanel下的页面中编写了以下代码。

   protected void myGrid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName =="EditNames")
                {
                    long lSelectedName = Convert.ToInt64(e.CommandArgument);
                    Session["SelectedItem"] = lSelectedName;
                    Response.Redirect("EditItem.aspx");
                }
                else if (e.CommandName =="DeleteNames")
                {
                    long lSelectedName = Convert.ToInt64(e.CommandArgument);
                    ValidName.DeleteItem(lSelectedName);

                 ScriptManager.RegisterStartupScript(this, GetType(), "Key", "alert('Name deleted sucessfully')", true);
                }
            }
            catch (System.Threading.ThreadAbortException)
            {

            }
            catch (Exception ex)
            {
                Error handling code...
            }

在这里,我在重定向时得到一个线程中止异常。无论如何,我通过使用错误处理程序System.threading.ThreadAbortException来解析它。

提问于
用户回答回答于
Response.Redirect("TargetPage", false);        //write redirect
context.ApplicationInstance.CompleteRequest(); // end response
用户回答回答于

预期会出现此错误。抛出它是因为服务器线程在重定向时实际上是中止的。

如果为endResponse参数指定true,则此方法将调用原始请求的end方法,该方法在完成时抛出ThreadAbortException异常。

扫码关注云+社区

领取腾讯云代金券