[英]Getting Thread Abort Exception while using Response.Redirect()
我在更新面板下的頁面中編寫了以下代碼。
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 下。
而不是結束請求,通過調用Context.ApplicationInstance.CompleteRequest()
繞過請求執行管道是一個好習慣。
所以你的代碼看起來像這樣:
Response.Redirect("TargetPage", false); //write redirect
Context.ApplicationInstance.CompleteRequest(); // end response
發生這種情況是因為您正在重定向try / catch塊內部。 不要這樣做。
Response.Redirect("Location", false);
它在沒有“ThreadAbortException”的情況下工作正常。
在重定向方法中提到false就足夠了,比如Response.Redirect(“TargetPage”,false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.