我想在 mvc 中启用跟踪,具体来说,如果满足某个条件,我想在页面上显示跟踪。
如果我在单个请求的上下文中请求它们,是否可以System.Diagnostics.Trace
显示写入?
我想在 mvc 中启用跟踪,具体来说,如果满足某个条件,我想在页面上显示跟踪。
如果我在单个请求的上下文中请求它们,是否可以System.Diagnostics.Trace
显示写入?
不幸的是,Trace
该类没有办法根据您要基于每个请求解决的条件来打开/关闭跟踪。这是一种全有或全无的方法。
也就是说,我强烈推荐MVC MiniProfiler(在 Stack Exchange 网站上使用,尤其是Stack Exchange Data Explorer上的公众)。
你基本上会在你的页面上得到这样的渲染:
您可以根据每个请求设置分析:
using StackExchange.Profiling;
...
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MiniProfiler.Start();
}
}
语法与使用类略有不同Trace
,因为您必须使用using
语句,如下所示:
using (profiler.Step("Set page title"))
{
ViewBag.Title = "Home Page";
}
原因是这是一个根本不同的操作;当你追踪时,你是在某个时间点写出一条信息。在进行分析时,您正在查看时间段,并且该using
语句允许您确定这些段的范围。
这可能有点矫枉过正,但我很乐意使用它,Trace
因为分析方面以及所显示信息的非侵入性(Trace
有一个令人讨厌的习惯,使页面看起来很奇怪)。
我最终求助于通过我的类传递一个记录器,然后在必要时有条件地在控制器中显示该信息。
使用容器,我将记录器实例绑定到 HttpContext 的范围,然后将其泵入我的视图模型。