It looks like you need to set the Content-Length header too, if you don’t it seems to use the MaxRequestContentBufferSize on HttpClientHandler to chunk the data when sending it.
Try using a StringContent, ByteArrayContent or StreamContent (If the steam is seekable) as these will be able to calculate the length for you.
var content = new StringContent(json);
HttpResponseMessage response = await client.PostAsync(content);
The PostAsJsonAsync extension methods create ObjectContent under the hood which doesn’t calculate the Content-Length and return false:
public class ObjectContent : HttpContent
{
/* snip */
protected override bool TryComputeLength(out long length)
{
length = -1L;
return false;
}
}
Thus will always fall back to chunking to the buffer size.