gpt4 book ai didi

c# - 将字节直接泵入 Response.OutputStream - 如何处理字节数?

转载 作者:行者123 更新时间:2023-11-30 15:43:47 26 4
gpt4 key购买 nike

我需要从网络服务传输大量数据。我不想增加元数据库中的 IIS 缓冲区大小,而是想将字节直接泵入无缓冲的 Response.OutputStream。

Response.ClearHeaders();
Response.Clear();
Response.ContentType = "text/xml";
Response.Buffer = false;
int len = GetReport(protocolName, sourceName, reportName, pageIndex, pageSize, Response.OutputStream);
Response.End();

这很好用,但我只能知道在 检索它们之后检索了多少字节,所以我无法设置 ContentLength header 。以下行抛出异常(开始返回内容后无法添加 header ):

int len = GetReport(protocolName, sourceName, reportName, pageIndex, pageSize, Response.OutputStream);
Response.AddHeader("Content-Length", len.ToString()); // can't do this

问题:我猜真的没有太多选择。我想处理这个问题的唯一方法是引入一个中间流,例如内存流,获取流的长度,设置 header ,然后将 that 流泵入 Response.Output 流.还有其他想法吗?”

最佳答案

content-length 不是必需的。如果您在将内容发送到响应流之前合理地不知道它,则将其保留。浏览器仍会正常显示结果,但无法提供进度条或完成百分比。如果内容很小,那么这不是主要问题。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

In HTTP, it SHOULD be sent whenever the message's length can be determined prior to being transferred

这是应该的,不是必须的。

关于c# - 将字节直接泵入 Response.OutputStream - 如何处理字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com