4

Response.write在我的 C# 文件中创建一个 Excel 文件,创建文件需要 1-2 分钟。我想用UpdateProgress来表示正在生成文件。但是当我使用时UpdateProgress,文件没有生成。

如果我在这里遗漏任何东西,请告诉我。

4

2 回答 2

3

我认为这是由于误解了响应对象和/或基本的 HTTP 请求结构。

您的请求:GET /buildXLS.aspx

服务器 1 响应: /* 文件下载的头信息 */ /* 文件数据 */

服务器 2 响应: /* HTML 页面的听众信息 */ <div>Updating...</div> /* 文件数据 */

如果您尝试像服务器 1 一样行事,则除了文件本身(和适当的标头)之外,您无法在响应中发回任何数据。如果您尝试像服务器 2 一样操作,您正在下载的页面将被视为 HTML,您将永远看不到文件数据,因为已写入标头指示“文本/html”传输而不是 XLS。事实上,一旦你出于任何原因刷新了响应,你就不能再写它了。

我可以看到您的方案可以工作的情况,但仅作为两个交互页面 - 第 1 页显示进度消息,然后打开一个新窗口,第 2 页。第 2 页开始 XLS 构建,然后触发第 1 页以隐藏进度消息它是完整的。现在您有两个页面来匹配您尝试发送的两组标头,而不是尝试在同一响应中同时发送 HTML 更新和开始文件下载。

于 2009-07-27T21:33:09.363 回答
0

请参阅UpdateProgress 控制概述

UpdateProgress 控件提供有关 UpdatePanel 控件中部分页面更新的状态信息。

您是否在 UpdatePanel 中进行部分页面更新?

于 2009-07-16T11:44:17.030 回答