[英]Response.End causing System.Threading.ThreadAbortException
我在button_Click()方法中嘗試捕獲,在其中使用EPPlus將一些數據保存到Excel電子表格中。
try
{
.... Some calculations here...
//Create Excel output.
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Report " +
DateTime.Today.Day.ToString() + "-" + DateTime.Today.Month.ToString() + "-" +
DateTime.Today.Year.ToString() + " " + DateTime.Now.Hour + "-" +
DateTime.Now.Minute + "-" + DateTime.Now.Second + ".xlsx");
package.SaveAs(Response.OutputStream);
Response.End();
}
cach()
{
LogException();
}
我收到一個錯誤System.Threading.ThreadAbortException,它是由於上面的Response.End()而得到的。
真正令人煩惱的是,盡管在我的開發機上它仍然輸出文件,但是當我將網站放置在服務器上時,它會記錄錯誤,頁面會無限加載,並且永遠不會吐出文件。
任何人都知道那里出了什么問題嗎?
只是捕獲ThreadAbortException
而什么也不做。 您可以放心地忽略此異常。
編輯:擺脫日志,或添加一個檢查以不登錄ThreadAbortException
catch(Exception ex){
if (ex is System.Threading.ThreadAbortException)
{
//do nothing
return;
}else{
LogException(ex);
}
}
當Response.Redirect或Response.End在try塊中時,將執行catch塊中的代碼。
您可以捕獲並吸收此TreadAbortException。
您也可以考慮添加一個finally塊來結束響應,而不是嘗試使用它。 如果發現異常,則可以修改響應並將錯誤發送回客戶端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.