【问题标题】:Why does Fiddler return "Fiddler] ReadResponse() failed:The server did not return a complete response for this request." for valid requests?为什么 Fiddler 返回“Fiddler] ReadResponse() failed: 服务器没有针对这个请求返回完整的响应。”对于有效的请求?
【发布时间】:2018-01-18 11:53:28
【问题描述】:

我有一个工作控制台应用程序,它将数据发送到 API。但是,一旦我启动提琴手,我就会收到消息:

[Fiddler] ReadResponse() 失败:服务器没有为此请求返回完整的响应。服务器返回 257 个字节。

Fiddler 中显示的第一个标头是:HTTP/1.1 504 Fiddler - Receive Failure 这似乎是由提琴手直接生成的,而不是来自我的 API 服务器(.NET)。

鉴于提琴手不会向我显示来自服务器的原始结果,我该如何调试为什么会发生这种情况?我认为存在某种 HTTP 标头错误,它与我的控制台应用程序兼容,但与 Fiddler 不兼容。

我一直在玩 gzip 压缩请求,所以可能其中一个标头不正确(Content-Length),但无法查看原始响应,因此很难调试此问题。

【问题讨论】:

    标签: http fiddler


    【解决方案1】:

    最后我得到了@ErikLaw 的一些帮助:

    1. 下载DebugViewhttps://docs.microsoft.com/en-us/sysinternals/downloads/debugview
    2. 在 Fiddler 在会话列表下的黑色 QuickExec 框中,键入 !spew 并按 Enter。 Fiddler 将开始向 DebugView 发送详细的日志记录信息,包括对网络的所有读取和写入。

    关于失败请求的更多信息随后显示在 DebugView 中,这导致我的 Web 服务器在发送所有内容之前提前关闭连接的根本原因。

    感谢 Eric。

    【讨论】:

    • 这太棒了,尼克!感谢您分享这个。是的,感谢 Eric 提供的出色工具!
    【解决方案2】:

    鉴于提琴手不会向我显示来自服务器的原始结果,我该如何调试为什么会发生这种情况?

    使用Wireshark 查看实际的网络流量。 Fiddler 很好(很棒),但它不是 Wireshark。但是,如果您的流量是 HTTPS,则需要跳过一些障碍。

    Wireshark 不像 Fiddler 那样易于使用,但功能要强大得多。

    另外,如果您使用的是 Windows,则需要使用您机器的本地网络 IP 地址(例如 192.168.x.y),而不是 localhost。见this question

    【讨论】:

    • 我在发布之前尝试了 WireShark,但它似乎有一个陡峭的学习曲线,我根本无法在日志中看到我的 (localhost) 流量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多