我正在我的 C# 文件中使用 Response.write
创建一个 Excel 文件,创建该文件需要 1-2 分钟。我想使用 UpdateProgress
来指示文件生成正在进行中。但是当我使用 UpdateProgress
时,文件没有生成。
如果我在这里遗漏了什么,请告诉我。
最佳答案
我认为这是由于误解了响应对象和/或基本的 HTTP 请求结构。
您的请求:GET/buildXLS.aspx
服务器 1 响应:/* 文件下载的头信息 *//* 文件数据 */
服务器 2 响应:/* HTML 页面的听众信息 */
正在更新...
/* 文件数据 */如果您尝试像服务器 1 那样行事,则不能将任何数据发送回响应,而是文件本身(和适当的 header )。如果您尝试像服务器 2 那样操作,您正在下载的页面将被视为 HTML,并且您将永远不会看到文件数据,因为已写入的 header 指示“文本/html”传输而不是 XLS。事实上,一旦你出于任何原因刷新了响应,你就不能再写它了。
我可以看到您的场景可以工作的情况,但只有两个交互页面 - 第 1 页显示进度消息,然后打开一个新窗口,第 2 页。第 2 页启动 XLS 构建,然后触发第 1 页以隐藏进度消息它是完整的。现在您有两个页面来匹配您尝试发送的两组 header ,而不是尝试在同一响应中同时发送 HTML 更新和开始文件下载。
关于c# - 在 ASP.NET 中使用 Response.write 生成文件时使用 updateprogress,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1136911/