asp.net - 在给定的场景中 Response.End() 是强制性的吗?

标签 asp.net response.write

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/

相关文章:

C# ASP.NET 自定义控件未显示

asp.net - 将一个站点的 asp.net 成员资格记录从一台 SQL Server 传输到另一台

c# - 导出文档后响应关闭

asp.net - Header Div位置根据Content Div编辑

c# - 网格水平 View

asp.net - SQL Server 2017 : Feature Pack Missing File

asp.net - Response.Write() 和 Response.Output.Write() 有什么区别?

javascript - node.js 中的 response.end 连接丢失

excel - 将 Excel 文件发送给使用 Chrome 和 IE 但不使用 firefox 的用户(获取没有扩展名的文件)

asp.net - ASP.NET MVC 中的response.write 是什么?