1

我们有一个用 .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));
            }
        });

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

问题

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

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

0 回答 0