我正在尝试从.NET中通过HttpWebRequest
发出的HTTP请求中提取详细的时序信息,就像Chrome中的Timing选项卡一样:
任何人都知道这是否可行?我找不到任何其他文档,而不是将整个请求包装在秒表中。但我真的很想要详细信息,比如从DNS解析需要多长时间,请求需要多长时间,内容下载等等。
答案 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中我会看到对GlobalLog
和Logging
的引用。也许您可以创建自己的跟踪侦听器来捕获所需的信息。 This post和this answer可能对您有用,因为它显示了如何配置跟踪侦听器。
答案 2 :(得分:0)
我建议您查看Miniprofiler https://miniprofiler.com/和Glimpse http://getglimpse.com/
首先设置Glimpse很好,它会向您显示有关您开箱即用的http请求的大量信息,但您可以配置mini profiler以发现慢速SQL查询等。您必须写一点代码,让它给你详细信息,但它非常善于向你展示你有瓶颈的地方,并且可以将它与Glimpse集成,以便你可以在同一个地方看到所有信息。
答案 3 :(得分:0)
使用数据包嗅探器,如线鲨,它将监控所有HTTP流量并在每个发送/接收数据包上加上时间戳