使用分块传输编码流式传输响应

时间:2016-03-03 11:03:07

标签: async-await dotnet-httpclient transfer-encoding

我们有一个用.net编写的小型代理服务器。核心代理功能的简化版本:

builder.Run(async ctx =>
        {
            using (HttpClient client = new HttpClient())
            {
                await client.SendAsync(BuildRequest(), HttpCompletionOption.ResponseHeadersRead)
                .ContinueWith(t => t.Result.Content.CopyToAsync(ctx.Response.Body));
            }
        });

这个想法是代理将简单地将任何下游响应流回到尽可能原始的调用客户端。

problem

代理和服务之间的连接似乎工作正常,总是返回我期望的17kb数据。问题出在客户端和代理之间,发送相同的请求会导致响应被截断,介于0到17kb之间,显然没有理由。

  • 将服务响应中的内容复制到客户端响应时,如何判断收到所有内容的时间?我知道分块传输是由0长度的块终止的,所以我需要手动检查这个,还是这个由httpresponse实例本身处理?

0 个答案:

没有答案