У нас есть azure функция, которая работает с azure v1 (. NET Framework 4.7). В ответе http мы пытаемся установить длину содержимого, но оно не передается клиенту. Он устанавливает заголовок кодировки Transfer со значением chunked. Чтобы получить представление о том, как мы его настраиваем.
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;
Я прошел некоторые онлайн-обсуждения и Azure / azure -functions-host # 3765 Там они говорили о настройке,
response.Headers.TransferEncoding.Add(TransferCodingHeaderValue.Parse("identity"))
Но, похоже, это бесполезно. Кто-нибудь сталкивался с такой проблемой раньше? Кстати, когда я запускал тот же код на azure function v2 (. NET Core 2.2), он работает.
Обновление: заголовок Transfer-Encoding, который мы могли видеть через захват пакетов с помощью wireshark. Снимок экрана Wireshark, на котором показан заголовок Transfer-Encoding, даже если длина содержимого задана с помощью кода
Update-2: это происходит для функций, работающих локально. Когда мы публикуем sh функцию на azure, она предоставляет заголовок длины содержимого. Локально, я думаю, что (v1) использует nodejs симулятор, который, кажется, имеет некоторые проблемы. Во всяком случае, будет обновлять здесь, когда мы найдем какие-либо обходные пути.