簡體   English   中英

導致System.Threading.ThreadAbortException的Response.End

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM