【发布时间】:2020-05-02 21:06:36
【问题描述】:
我们有运行 azure v1 (.NET Framework 4.7) 的 azure 函数。在 http 响应中,我们正在尝试设置内容长度,但它没有流向客户端。它将传输编码标头的值设置为分块。 看看我们是如何设置它的。
var body = <some byte array data>
var response = new HttpResponseMessage();
response.Content = new ByteArrayContent(body);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentLength = body.Length;
我经历了一些online discussion 和Azure/azure-functions-host#3765 他们在那里谈到了设置,
response.Headers.TransferEncoding.Add(TransferCodingHeaderValue.Parse("identity"))
不过好像没什么用。 以前有人会遇到这样的问题吗? 顺便说一句,当我在 azure function v2 (.NET Core 2.2) 上运行相同的代码时,它可以工作。
更新:我们可以通过使用wireshark 的数据包捕获看到Transfer-Encoding 标头。 Wireshark screenshot depicting Transfer-Encoding header even if content-length is set through code
Update-2 :这发生在本地运行的函数上。当我们在 azure 上发布该函数时,它确实提供了内容长度标头。在本地,我猜它(v1)使用 nodejs 模拟器,这似乎有一些问题。无论如何,一旦我们找到任何解决方法,就会在这里更新。
【问题讨论】:
标签: azure azure-functions