Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自HttpWebRequest的详细计时信息_C#_.net_Httpwebrequest_Httpwebresponse - Fatal编程技术网

C# 来自HttpWebRequest的详细计时信息

C# 来自HttpWebRequest的详细计时信息,c#,.net,httpwebrequest,httpwebresponse,C#,.net,Httpwebrequest,Httpwebresponse,我正试图从通过.NET中的HttpWebRequest发出的HTTP请求中提取详细的计时信息,很像Chrome中的计时选项卡: 有人知道这是否可能吗?除了将整个请求包装在秒表中之外,我找不到任何其他文档。但我真的很想知道细节,比如从DNS解析需要多长时间,请求需要多长时间,内容下载等等。我建议查看Miniprofiler并一瞥 首先设置Spile很好,它将向您显示大量关于您刚开箱即用的http请求的信息,但是您可以配置mini profiler来发现缓慢的SQL查询等。您必须编写一些代码才能让

我正试图从通过.NET中的
HttpWebRequest
发出的HTTP请求中提取详细的计时信息,很像Chrome中的计时选项卡:


有人知道这是否可能吗?除了将整个请求包装在秒表中之外,我找不到任何其他文档。但我真的很想知道细节,比如从DNS解析需要多长时间,请求需要多长时间,内容下载等等。

我建议查看Miniprofiler并一瞥


首先设置Spile很好,它将向您显示大量关于您刚开箱即用的http请求的信息,但是您可以配置mini profiler来发现缓慢的SQL查询等。您必须编写一些代码才能让它提供详细信息,但它非常擅长向您显示哪里存在瓶颈,可以将它与Spiew集成,以便您可以在同一位置查看所有信息。

嗯,我不确定它是否有帮助,但请查看有关
GlobalLog
日志记录的参考资料。也许您可以创建自己的跟踪侦听器来捕获所需的信息。这可能对您很有用,因为它显示了如何配置跟踪侦听器。

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

var waiting=新秒表();
var contentDownload=新秒表();
正在等待。开始();
使用(var webResponse=(HttpWebResponse)webRequest.GetResponse())
{
等着,停下来;
contentDownload.Start();
使用(var reader=newstreamreader(webResponse.GetResponseStream())
{
var body=reader.ReadToEnd();
contentDownload.Stop();
}
}
其实就这么简单。调用
GetResponse
对应Chrome的等待,
GetResponseStream
+
ReadToEnd
对应内容下载


在本例中,我提出了一个GET(无主体)请求。能够对发送的请求计时是有意义的,但使用这种方法并不能真正实现。

使用数据包嗅探器,如wire shark,它将监控所有HTTP流量,并在每个发送/接收的数据包上设置时间戳。

似乎没有现成的东西。出于调试目的,您可以配置网络跟踪,然后查看跟踪文件(其中包含关于请求的每个步骤的非常详细的信息,带有时间戳)。