8

我们正在实施长时间运行的过程,以使用 asp.net 3 将数据库内容下载为 xml。

总文档生成时间约为 3-5 分钟,我们希望尽快回复第一个字节。我们已经覆盖System.Web.Mvc.FileResult并正在尝试执行以下操作:

protected override void WriteFile(HttpResponseBase response)
{
   Stream outputStream = response.OutputStream;
   byte[] header = xmlExportService.XmlHeader();
   response.Flush();
   outputStream.Write(header, 0, header.Length);
   response.Flush();
   //// some long running generation here
}

在 Windows 7 下的本地 iis 上,我正在浏览器中打开保存文件对话框。在生产中,windows server 2008 R2 在生成整个文件之前没有对话框。

有任何想法吗?

4

2 回答 2

5

不确定这是否对任何人都有帮助,但如果您启用了 HTTP 压缩,则 Response.Flush 将无法“工作”。我们在我们的服务器上启用了动态压缩,对 Response.Flush 的调用就会挂起。经过一些研究,这与服务器正在等待所有输出的事实有关,因此它可以“压缩并发送它”。

由于我们使用的是 MVC,我正在考虑使用一个属性来动态控制是否为非静态页面启用压缩。现在,我们刚刚摆脱了视图中的 Response.Flush 调用。

于 2013-04-18T22:12:44.100 回答
2

你看过这个帖子吗?同样的问题,接受的答案,可能会有所帮助?

于 2012-09-25T15:26:52.073 回答