【发布时间】:2019-08-30 01:24:10
【问题描述】:
我写入 Response.OutputStream,并在 Response.OutputStream.Flush() 上进行中间刷新调用。但是,在我调用 Response.Flush() 之前,客户端不会显示任何传输的数据。
我正在使用流到流的方法来降低大量下载的内存占用,但它实际上并没有向客户端发送数据,这意味着它在响应中累积数据并消耗内存,而不是将其刷新到客户端。
作为测试,我这样做并添加了一个漫长的等待,将其部署到 IIS(只是为了确保这不是 IIS Express 的某些行为):
largeFileStream.CopyTo(Response.OutputStream);
Response.OutputStream.Flush();
Thread.Sleep(10000);
Response.Flush();
调用 Response.Flush 10 秒后浏览器才会显示任何数据传输。
我还尝试了在每个循环之后使用 OutputStream.Flush 调用的缓冲循环,但结果相同。
为什么Response.OutputStream.Flush() 不触发任何数据传输到客户端?
【问题讨论】:
-
你试过 Response.BufferOutput = False 吗?我认为一个刷新在设备上,而另一个只是从内存刷新到设备。
-
@the_lotus 修复了它。想发布答案? “如果您希望它立即流式传输到客户端,则必须在开始写入 OutputStream 之前设置
Response.BufferOutput = false。”
标签: c# asp.net asp.net-mvc