标签未在System.Threading.ThreadAbortException中更新

时间:2016-01-21 09:10:50

标签: c# asp.net threadabortexception

在我的页面中,我正在尝试下载文件。该文件已成功下载,但我收到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下吗?

1 个答案:

答案 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)而言,完全重写的响应流并不是很有意义。