protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context) { const int maxChars = 128; //it is empiric value measured using Console.WriteLine(builder.Length) EncodingContext encodingContext = DefaultHttpEncoding; using (var encodingBuffer = new ArrayRental <byte>(DefaultHttpEncoding.GetMaxByteCount(maxChars))) { //write start boundary await stream.WriteStringAsync(DoubleDash + boundary + CrLf, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false); encodingContext.Reset(); var builder = new StringBuilder(maxChars); //write each nested content var writeDivider = false; foreach (var entry in entries) { await EncodeHeadersToStreamAsync(stream, builder, entry, writeDivider, boundary, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false); encodingContext.Reset(); Debug.Assert(builder.Length <= maxChars); writeDivider = true; await entry.CopyToAsync(stream).ConfigureAwait(false); } //write footer await stream.WriteStringAsync(CrLf + DoubleDash + boundary + DoubleDash + CrLf, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false); } encodingContext.Reset(); }