首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有MVC结果的Response.Flush不起作用

具有MVC结果的Response.Flush不起作用
EN

Stack Overflow用户
提问于 2012-04-25 22:29:46
回答 2查看 4K关注 0票数 8

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

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

代码语言:javascript
运行
复制
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只有在生成整个文件后才会显示对话框。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-19 06:12:44

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

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

票数 5
EN

Stack Overflow用户

发布于 2012-09-25 23:26:52

你有没有看过这些帖子?同样的问题,公认的答案,可能会有所帮助?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10317832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档