微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 带MVC结果的Response.Flush无效

我们正在实现长时间运行的进程,以使用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,header.Length);
   response.Flush();
   //// some long running generation here
}

在Windows 7下的本地iis上,我在浏览器中收集“保存文件”对话框.在生产时,Windows Server 2008 R2在生成整个文件之前没有对话框.

有任何想法吗?

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐