.NET中的HttpWebRequest指标与Firebug或Pingdom工具类似

时间:2012-01-01 18:45:02

标签: c# .net httpwebrequest metrics

我正在寻找一种方法来测量.NET中(HTTP)Web请求的每一步,类似于Firebug的网络瀑布时间线或Pingdom.com的整页测试。

两者共享显示每个请求所需时间跨度的最小公分母:

  • 查找DNS
  • 连接
  • 发送请求
  • 等待回复
  • 收到回复

显然我可以使用计时器来测量Web请求GetResponse()和GetResponseStream()方法,但我正在寻找一种尽可能多的测量方法。

.NET测量请求生命周期的每个阶段的最佳方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以查看ETW跟踪来执行此操作。 AFAIK ETW跟踪从许多.NET API输出大量信息。至少我一直看到它使用反射器来浏览.NET框架。

如果ETW不能这样做,我很确定你可以在管道中挂钩许多相关点:

  • 查找DNS:自己查找并测量时间。 HttpWebRequest的内部查找现在将从缓存提供,并在0ms内执行。
  • 连接:当您调用GetRequestStream()
  • 时会发生这种情况
  • 发送请求:当您调用GetRequestStream()时会发生这种情况.Dispose()
  • 等待响应:当您调用GetResponseStream()
  • 时会发生这种情况
  • 接收响应:当GetResponseStream()。Read()返回0时,会发生这种情况。