我想在asp.net mvc应用程序中检查每个页面的渲染时间。
我正在使用asp.net跟踪。我已经覆盖了BaseController类上的OnActionExecuting和OnActionExecuted方法。
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string controler = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString();
StartTime =System.DateTime.Now;
System.Diagnostics.Trace.Write(string.Format("Start '{0}/{1}' on: {2}", controler, action, System.DateTime.Now.UtilToISOFormat()));
}
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
string controler = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString();
var totalTime = System.DateTime.Now - this.StartTime;
System.Diagnostics.Trace.Write(totalTime.ToString());
System.Diagnostics.Trace.Write(string.Format("End '{0}/{1}' on: {2}", controler, action, System.DateTime.Now.UtilToISOFormat()));
}
在OnActionExecuted方法中,我得到总时间。我如何在http://localhost:51335/Trace.axd
报告中显示这段时间?
即使我在<%@ Page%>中设置了Trace="true"
在每一页上也是。
答案 0 :(得分:1)
Classic ASP.NET在您的aspx代码中使用以下内容:Page.Trace.Write(totalTime.ToString());
在MVC中,你通常使用System.Diagnostics.Trace.Write(......就像你所做的那样,所以这段代码是正确的。
在web.config中尝试此操作。它将System.Diagnostics.Trace路由到ASP.NET跟踪:
<system.diagnostics>
<trace>
<listeners>
<add name="WebPageTraceListener"
type="System.Web.WebPageTraceListener, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</listeners>
</trace>
</system.diagnostics>
您可以尝试的另一件事是使用Controller.HttpContext.Trace。我现在无法测试,因为我是通过手机写的,所以请告诉我这是否有效。
此页面显示了有关如何使所有System.Diagnostics.Trace消息显示为Trace.axd的更多信息 - http://msdn.microsoft.com/en-us/library/b0ectfxd%28v=VS.85%29.aspx