1

在我的页面中,我正在尝试下载文件。文件已成功下载,但我得到 System.Threading.ThreadAbortException。所以我在我的 try 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 块下?

4

1 回答 1

0

发生 ThreadAbortException 是因为您通过调用 Response 对象的 End() 方法过早关闭了 Response。这也解释了为什么在页面内容上写已经太晚了。这不是一个非常烦人的错误,但最好干净地处理它。

只需检查这些答案为什么 Response.Redirect 会导致 System.Threading.ThreadAbortException?如何避免 Response.End() 在 Excel 文件下载期间出现“线程被中止”异常以及与 Response 和 ThreadAbortException 相关的其他答案,以便根据您的使用情况编写更好的文件下载代码来理解和正确处理。

另请注意,同时拥有完全重写的页面响应流和其中的一些内容(如标签)并没有多大意义。

于 2016-01-21T09:18:19.160 回答