我们正在使用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
}
在Windows7下的本地iis上,我正在浏览器中设置保存文件对话框。在生产环境中,windows server 2008 R2只有在生成整个文件后才会显示对话框。
有什么想法吗?
发布于 2013-04-19 06:12:44
我不确定这是否对任何人有帮助,但是如果你启用了HTTP压缩,Response.Flush将不会“工作”。我们在服务器上启用了动态压缩,对Response.Flush的调用就会挂起。经过一些研究后,这与服务器正在等待所有输出的事实有关,因此它可以“压缩并发送它”。
由于我们使用的是MVC,因此我正在考虑使用一个属性来动态控制是否为非静态页面启用压缩。现在,我们只是在视图中去掉了Response.Flush调用。
发布于 2012-09-25 23:26:52
你有没有看过这些帖子?同样的问题,公认的答案,可能会有所帮助?
https://stackoverflow.com/questions/10317832
复制相似问题