如何在ASP.NET Trace中增加信息

时间:2008-10-15 11:36:57

标签: asp.net performance trace

我对应用程序的后端进行了一些性能改进,为了向GUI的最终用户展示好处,我们一直在使用Trace.axd页面来进行计时。 (前端是.Net 1.1,后端是Java,通过Web服务连接。)

然而,这些时间显示旧的和新的后端没有区别。

通过在后端放置断点并在那里保持30秒的请求,我可以从Trace.axd看到POST占用3ms,GET占用4s。我错过了大约26岁......

POST是性能改进的地方,但Trace页面上的时间似乎只包括发送请求所需的时间,而不是返回的时间。

有没有办法在跟踪中添加信息的粒度以包含整个请求?或者还有其他方法可以进行我需要的测量吗?

3 个答案:

答案 0 :(得分:1)

好的,我最终得到了我想要的东西。问题是IIS Trace不包括POST返回的时间。

我发现我可以使用Trace.Write()将自定义条目添加到跟踪日志中,甚至可以使用Trace.Write(字符串类别,字符串消息)添加类别。

在POST完成后执行的代码中添加对Trace.Write()的调用,这给了我一个更好的数字。

尽管如此,它并不理想,因为它是定制的,而且我应该尽可能接近POST周期的结束。

答案 1 :(得分:0)

我不确定你是如何在.NET端发出请求的,但我会假设某处有一个HttpWebRequest。我希望HttpWebRequest.GetResponse()在收到响应头后立即返回。这样,您可以开始处理大响应的开始,而其余的仍在下载。如果跟踪消息紧接在调用GetResponse之前和之后,则您将看不到后端的整个执行时间。您可以在关闭响应后立即添加跟踪消息吗?

答案 2 :(得分:0)

跟踪输出没有显示您在制动点上花费的所有时间,这是不正常的。您是否检查了总时间列,看它是否与您在请求中花费的时间相匹配?不要忘记其中一列仅显示自上一个跟踪语句以来所花费的时间。

如果您想在跟踪输出中获得更精细的数据,可以添加自己的数据。 TraceContext类有两个方法,Warn和Write,它们将行添加到输出中(警告将它添加为红色)。

可以从每个页面或控件访问TraceContext:只需使用this.Trace.Warn()或this.Trace.Write()(我认为它也可以通过HttpContext类访问)。