我写到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()
不触发任何数据传输到客户端?
答案 0 :(得分:1)
如果要立即输出到OutputStream,必须在开始写入OutputStream之前设置Response.BufferOutput = false。
我认为其中一个刷新在设备上,而另一个仅从内存刷新到设备。