【发布时间】:2019-01-09 14:16:51
【问题描述】:
我想使用ASP.NET 和IIS 将动态生成的文件下载到浏览器进行保存。我不知道将生成的文件的大小。
在当前表单中,我的代码生成数据并使用 HttpResponse.Write() 发送到客户端。但在最终显示保存文件对话框之前,客户端大约一分钟内没有看到任何活动。
默认情况下,IIS 缓冲要发送到客户端的输出。可以将其关闭,但这对我来说没有帮助。问题似乎是 IIS 选择格式化数据包的方式。
如果提前知道文件大小,那么我可以在标题中设置 Content-length。如果我关闭了输出缓冲,那么 IIS 可以立即开始向客户端发送数据。
但由于我不知道文件大小,IIS 似乎会缓冲输出直到达到某个限制(数据包大小或时间,我不知道),然后发送一个传输编码设置为的数据包分块。
我可以自己尝试对数据进行分块,但有没有办法让 IIS 执行分块,但使用更小的数据包大小以便更快地显示对话框?
【问题讨论】: