如何检查Asp.Net请求管道?

时间:2020-03-06 14:52:17  来源:igfitidea点击:

当我在Asp.Net应用程序的"内部"上测量请求时间并将其与应用程序的"外部"上的计时进行比较时,我有时会得到不同的值-1000-5000ms奇怪的开销。

也许请求在IIS前面排队了吗?

还是HttpModule中发生了奇怪的事情?

问题:是否有一种方法可以检查请求管道,以准确跟踪应用程序被击中之前所花费的时间?

解决方案

我们可以创建自己的模块并将其注册在顶部,以更精确地跟踪每个请求,但是一旦IIS将请求委派给ASP.NET ISAPI模块,该措施就会开始。为了获得更高的准确性,我们可以转到IIS日志。

我们可以在web.config文件中打开跟踪。该行应显示类似" <trace enabled =" true" pageOutput =" true" />`的内容。 MSDN页面在这里。

正如Dan所说,我们需要在应用程序级别(web.config)启用跟踪:

<!-- pageOutput enables trace output from the page itself -->
<system.web>
<trace enable="true" pageOutput="true" traceMode="SortByTime"/>
</system.web>

或者,我们可以在页面级别启用跟踪。这可以通过在Page指令中设置trace =" true"来完成。

<%@ Page Language="C#" Trace="true" 
         Inherits="System.Web.UI.Page" CodeFile="Default.aspx.cs" %>

可以从http://localhost/appname/trace.axd查看应用程序级别的跟踪。这将显示请求列表:

http://www.brainbell.com/tutorials/ASP/images/F18GU01.png

当我们单击每个页面的详细信息时,我们可以看到页面生命周期中每个事件花费了多少时间。这应该可以确定页面实际花费的时间超出了预期的时间。

[从http://www.brainbell.com/tutorials/ASP/Built-in_Handlers.html引用的图像]