string filePath = ExportAndSaveInvoiceAsHtml(invoiceId);
Response.AddHeader("Content-Disposition", "attachment;filename=" + Path.GetFileName(filePath));
Response.WriteFile(filePath);
// Using Response.End() solves the problem
// Response.End();
我想让用户能够下载 HTML 发票(从发票的 gridView 中)。生成的文件包含发票文件数据 + 不需要的页面 html。
如果我使用 Response.End(),它可以解决问题,但它总是抛出异常。在一些线程中读到异常是设计使然的。但可以肯定的是,它不会随时导致响应截断之类的问题吗?
我还能怎样只写入文件数据。
顺便说一句,之前我们将发票写为 PDF,当时没有使用 Response.End() 导致文件下载不完整。
有人可以提供将自定义数据/文件写入响应流的基础知识吗?
最佳答案
这是因为响应是缓冲的。您必须调用Response.End()刷新缓冲区并确保客户端在处理程序线程完成之前获得完整的响应。
ThreadAbortException Response.End()
抛出的异常是设计使然,可以安全地忽略。
关于asp.net - 在给定的场景中 Response.End() 是强制性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862754/