2016-01-21 105 views
1

在我的頁面中,我正在嘗試下載文件。該文件下載成功,但我得到System.Threading.ThreadAbortException。所以我在我的嘗試Catch Block中處理了這個錯誤,並將錯誤標籤設置爲空白,但它不會在頁面中更新。標籤在System.Threading.ThreadAbortException中未更新

 catch (System.Threading.ThreadAbortException) 
     { 
      lblErrorMsg.Text = "dfdf"; 
     } 
     catch (Exception ex) 
     { 
      lblErrorMsg.Text = "Error while processing you request :<br> Erorr Description : " + ex.Message; 
     } 

這是我寫文件功能

public static void WriteFile(string nameOfFile, string fileContent, HttpResponse writer) 
    { 
     writer.ClearHeaders(); 
     writer.ClearContent(); 

     writer.ContentType = "text/xml"; 
     writer.AppendHeader("Content-Disposition", "attachment; filename=" + nameOfFile); 
     writer.Write(fileContent); 
     writer.Flush(); 
     writer.End(); 
    } 

誰能告訴爲什麼即使談到system.thread.threadabortexceptiopn的catch塊下,當我調試的代碼標籤沒有被設置爲空白?

回答

0

ThreadAbortException發生是因爲您通過調用Response對象的End()方法提前關閉Response。 這也解釋了爲什麼寫在頁面內容上爲時已晚。這不是一個非常煩人的錯誤,但它會更好地處理乾淨。

只要檢查這些答案Why Response.Redirect causes System.Threading.ThreadAbortException?How to Avoid Response.End() "Thread was being aborted" Exception during the Excel file download和其他與Response和ThreadAbortException有關的答案,就可以根據您的使用情況編寫一個更好的文件下載代碼來理解它並正確處理。

另外請注意,對於頁面和其上的一些內容(如標籤),同時具有完全重寫的響應流並不很有意義。

+0

我沒有在標籤上寫任何內容。只需在標籤上寫入例外。在你的答案中的鏈接不幫助我:(你能給我具體的解決方案 – Happy

+0

也正如你可以在我的代碼中看到,我沒有做response.redirect – Happy

+0

第一個問題:你明確地清空響應內容來取代你的下載,第二個問題:你有沒有在第二個鏈接上看到user3412640的回答?我告訴過你,問題在於對End()的調用,你的迴應的方法 – AFract