在我的页面中,我正在尝试下载文件。该文件已成功下载,但我收到System.Threading.ThreadAbortException。所以我在我的尝试Catch Block中处理了这个并将错误标签设置为空白但它没有在页面中更新。
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 Block下吗?
答案 0 :(得分: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相关的其他答案,以了解它并通过编写更好的文件下载代码来正确处理。
另请注意,对于页面及其上的某些内容(如Label)而言,完全重写的响应流并不是很有意义。