c#反向代理未从1个内部服务返回响应

时间:2018-10-13 00:55:43

标签: c# postman

我有一个C#反向代理。它正在为一种内部服务(A)工作,但有一项在失败(B)。 我正在使用邮递员进行测试。 连接到(A)在反向代理日志中显示以下内容。

DEBUG - Internal server responded with 22119
DEBUG - Internal server responded 
<!doctype html>

<html lang="en">
....

连接到(B)在反向代理日志中显示以下内容。

DEBUG - Internal server responded with 4478
DEBUG - Internal server responded 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- Login page -->
<HTML>

基本行包括在下面

byte[] responseData = server.GetResponseStreamBytes(internalResponse);
Log.Debug("Internal server responded with " + responseData.Length.ToString());
Log.Debug("Internal server responded \n" +
                      System.Text.Encoding.UTF8.GetString(responseData));

for (int i = 0; i < internalResponse.Headers.Count; ++i)
{
   externalResponse.AddHeader(internalResponse.Headers.Keys[i], internalResponse.Headers[i]);
}
externalResponse.OutputStream.Write(responseData, 0, responseData.Length);
externalResponse.End();

通过调试,这是一行

externalResponse.End();
导致Postman报告“无法获得任何响应”的

,write语句正确执行。 如果直接通过浏览器连接,则A和B服务都可以正常工作。

1 个答案:

答案 0 :(得分:0)

内部服务正在返回分块响应。将所有标头传输回客户端会导致ERR_INVALID_CHUNKED_ENCODING,该错误仅通过Chrome可见,而邮递员则不可见。通过删除“ Transfer-Encoding”标头来解决。