来自HttpWebRequest的详细时序信息

时间:2017-11-16 10:02:43

标签: c# .net httpwebrequest httpwebresponse

我正在尝试从.NET中通过HttpWebRequest发出的HTTP请求中提取详细的时序信息,就像Chrome中的Timing选项卡一样:

enter image description here

任何人都知道这是否可行?我找不到任何其他文档,而不是将整个请求包装在秒表中。但我真的很想要详细信息,比如从DNS解析需要多长时间,请求需要多长时间,内容下载等等。

4 个答案:

答案 0 :(得分:3)

为了将来的参考,我正在回答我自己的问题。虽然使用记录器的建议答案可能有效,但我发现了更好的(IMO)和更简单的方法:

var waiting = new Stopwatch();
var contentDownload = new Stopwatch();
waiting.Start();
using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
{
    waiting.Stop();
    contentDownload.Start();
    using (var reader = new StreamReader(webResponse.GetResponseStream()))
    {
        var body = reader.ReadToEnd();
        contentDownload.Stop();
    }
}

就这么简单。致电GetResponse对应Chrome的等待GetResponseStream + ReadToEnd对应内容下载

在这个例子中,我正在进行GET(无身体)请求。能够计时请求发送是有意义的,但使用这种方法无法实现。

答案 1 :(得分:1)

好吧,我不确定它是否会有所帮助,但在reference source中我会看到对GlobalLogLogging的引用。也许您可以创建自己的跟踪侦听器来捕获所需的信息。 This postthis answer可能对您有用,因为它显示了如何配置跟踪侦听器。

答案 2 :(得分:0)

我建议您查看Miniprofiler https://miniprofiler.com/和Glimpse http://getglimpse.com/

首先设置Glimpse很好,它会向您显示有关您开箱即用的http请求的大量信息,但您可以配置mini profiler以发现慢速SQL查询等。您必须写一点代码,让它给你详细信息,但它非常善于向你展示你有瓶颈的地方,并且可以将它与Glimpse集成,以便你可以在同一个地方看到所有信息。

答案 3 :(得分:0)

使用数据包嗅探器,如线鲨,它将监控所有HTTP流量并在每个发送/接收数据包上加上时间戳

相关问题