Debugging 如何从中间Web API服务捕获HTTP流量?

Debugging 如何从中间Web API服务捕获HTTP流量?,debugging,rest,asp.net-web-api,fiddler,wireshark,Debugging,Rest,Asp.net Web Api,Fiddler,Wireshark,以下是我目前的设置: 客户端应用------>中间Web API服务(接收来自客户端的调用)--->第三方RESTful服务(接收来自中间服务的调用) 因此,如果我从客户端调用中间服务或从中间服务调用第三方服务,我可以使用Fiddler或Wireshark检查发布的XML/JSON 问题是,当我一直从客户端呼叫时,我想检查从中间服务发送到第三方服务的实际原始HTTP传出消息。如果我在包含中间服务的服务器上运行Fiddler,我看不到HTTP流量从中间服务传出。我也试过Wireshark,但它也无

以下是我目前的设置:

客户端应用------>中间Web API服务(接收来自客户端的调用)--->第三方RESTful服务(接收来自中间服务的调用)

因此,如果我从客户端调用中间服务或从中间服务调用第三方服务,我可以使用Fiddler或Wireshark检查发布的XML/JSON

问题是,当我一直从客户端呼叫时,我想检查从中间服务发送到第三方服务的实际原始HTTP传出消息。如果我在包含中间服务的服务器上运行Fiddler,我看不到HTTP流量从中间服务传出。我也试过Wireshark,但它也无法接收流量。但是,我知道这是因为第三方服务正在向我发回错误

中间服务充当客户端应用程序到第三方服务的门面,并在将另一个HTTP客户端出站到第三方服务之前对来自客户端的数据进行处理。第三方服务接收传出消息时遇到问题,我确实需要看到中间服务忽略原始HTTP消息(我正在使用
HttpClient.PostAsync
将数据发布到第三方服务)。在发送之前,我已经将其保存到数据库中,但我提取的内容似乎还可以


那么主要的问题是,我如何获得我的中介服务发布到第三方服务的消息?Fiddler、Wireshark或其他程序中有什么东西可以用来检查从中介服务传出的HTTP消息吗?

我认为Fiddler不会工作,因为它只会拦截浏览器中的调用。你能修改一下你的中介代码吗?。您可以在HttpClient中插入用于记录消息的处理程序,该处理程序用于调用第三方服务。处理程序看起来像这样

public class LogginHandler : DelegatingHandler
{
    public LogginHandler(HttpMessageHandler inner)
        : base(inner)
    {
    }

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
            using (var fs = new FileStream("c:\\temp\\log.txt", FileMode.Create, FileAccess.Write))
            {
                await request.Content.CopyToAsync(fs);
            }

            return await base.SendAsync(request, cancellationToken);

    }
}
HttpClient client = new HttpClient(new LogginHandler(new HttpClientHandler()));
将“中间Web API服务”配置为通过运行在同一(或不同)计算机上的Fiddler实例代理其流量,这将很好地工作


如果您的服务是用.NET编写的,您可以手动配置其代理:或者更新machine.config或web.config:以便其流量通过Fiddler实例。

这是一个很好的建议,我认为它会起作用。现在我正在服务器上安装VS.NET以直接运行代码,这样我就可以在浏览器中启动它并捕获Fiddler的流量。如果这是可行的,这将是理想的。Fiddler可以很好地捕获来自任何HTTP/HTTPS客户端(包括非浏览器客户端)的流量。@EricLaw-我正在阅读这篇文章,答案中的配置是否是Fiddler获取所有流量所必需的?我还尝试了Microsoft网络监视器,但我刚刚意识到我无法看到正在发送的安全HTTPS消息的有效负载。我感兴趣的是HTTPS负载的失效。这很有效-