【发布时间】:2013-08-20 09:27:06
【问题描述】:
我通过在我的页面中间调用Response.Flush() 将页面分块发送给客户端。这样浏览器将获取 html 的第一部分,并可以在我的服务器继续处理请求的其余部分时开始下载资源。
由于我的 IIS 服务器和我的客户端(CDN、防火墙、负载平衡等)之间的某些第 3 方服务,我需要设置标头 Transfer-Encoding: Chunked,以便他们知道响应将以块的形式返回。
我尝试通过调用设置标题:Response.Headers.Add("Transfer-Encoding", "chunked");
由于某种原因,当我这样做时,我在等待很长时间后返回一个空白页面,即使直接联系我的 IIS 服务器,也没有经过所有第 3 方。附加到要调试的进程时,我没有看到任何错误。
删除“Transfer-Encoding”标头有效,但我需要此标头用于我正在使用的某些第 3 方。
任何人都知道如何在我的网络应用程序中设置此标头??
顺便说一句 - 我也尝试直接在 IIS 的“响应标头”部分设置此标头,但这样做时响应仍然为空。
【问题讨论】:
-
似乎分块传输编码需要数据以特定格式编码。您的问题不清楚您是否执行了这种编码。你 ? en.wikipedia.org/wiki/Chunked_transfer_encoding
-
@jbl - 谢谢!我对此进行了进一步调查,并意识到在 asp.net 中调用
Response.Flush()不幸的是,它不会以使用标头Transfer-Encoding: chunked所需的格式输出数据。响应已发送,但浏览器不知道如何分析它。如果您将此添加为正确答案,我将奖励您赏金! -
完成。谢谢后续!
-
@jbl - 不客气!感谢您的回答,我为此看了一段时间。 :)
标签: c# asp.net asp.net-mvc iis-7 iis-7.5