使用 Response.Redirect() 时出现线程中止异常

2024-04-14

我在更新面板下的页面中编写了以下代码。

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.

但我不确定为什么在重定向时会出现该错误。尽管我解决了这个问题,但我想知道我的编码方式是否有任何错误,或者是否有任何方法可以阻止错误触发。

提供您的意见...

请注意,该页面位于 AJAX UPDATE PANEL 下。


请阅读这篇文章——http://blogs.msdn.com/b/tmarq/archive/2009/06/25/ Correct-use-of-system-web-httpresponse-redirect.aspx http://blogs.msdn.com/b/tmarq/archive/2009/06/25/correct-use-of-system-web-httpresponse-redirect.aspx

最好的做法是通过调用绕过请求执行管道,而不是结束请求Context.ApplicationInstance.CompleteRequest().

所以你的代码看起来像这样:

Response.Redirect("TargetPage", false);        //write redirect
Context.ApplicationInstance.CompleteRequest(); // end response
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Response.Redirect() 时出现线程中止异常 的相关文章

随机推荐