Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下载不';在Response.Flush()之前不要启动流_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 下载不';在Response.Flush()之前不要启动流

C# 下载不';在Response.Flush()之前不要启动流,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我写入Response.OutputStream,并对Response.OutputStream.flush()进行中间刷新调用。但是,在调用Response.Flush()之前,客户端不会显示任何传输的数据 我使用流到流的方法来为大量下载保持较低的内存占用,但它实际上并没有向客户端发送数据,这意味着它在响应中积累数据并消耗内存,而不是将其刷新到客户端 作为测试,我这样做了,并添加了一个长等待,将其部署到IIS(只是为了确保这不是IIS Express的某些行为): 浏览器在调用Response

我写入Response.OutputStream,并对Response.OutputStream.flush()进行中间刷新调用。但是,在调用Response.Flush()之前,客户端不会显示任何传输的数据

我使用流到流的方法来为大量下载保持较低的内存占用,但它实际上并没有向客户端发送数据,这意味着它在响应中积累数据并消耗内存,而不是将其刷新到客户端

作为测试,我这样做了,并添加了一个长等待,将其部署到IIS(只是为了确保这不是IIS Express的某些行为):

浏览器在调用Response.Flush 10秒后才会显示任何数据传输

我还尝试了一个带有OutputStream.Flush的缓冲循环,但结果相同


为什么
Response.OutputStream.Flush()
不触发任何到客户端的数据传输?

如果要立即将其流式传输到客户端,必须在开始写入OutputStream之前设置Response.BufferOutput=false


我认为一个刷新设备,而另一个只是从内存刷新到设备。

您是否尝试过Response.BufferOutput=False?我认为一个在设备上刷新,而另一个只是从内存刷新到设备上。@lotus修复了它。想发布答案吗?“如果要将OutputStream立即流式传输到客户端,则必须在开始写入OutputStream之前设置
Response.BufferOutput=false
。”
largeFileStream.CopyTo(Response.OutputStream);
Response.OutputStream.Flush();
Thread.Sleep(10000);
Response.Flush();