我希望能夠在MVC跟蹤,具體而言,我想表明跟蹤頁面上,如果滿足特定條件。MVC跟蹤具體要求只有
是否有可能使System.Diagnostics.Trace
寫入顯示當且僅當我在一個單一的請求的情況下要求他們?
我希望能夠在MVC跟蹤,具體而言,我想表明跟蹤頁面上,如果滿足特定條件。MVC跟蹤具體要求只有
是否有可能使System.Diagnostics.Trace
寫入顯示當且僅當我在一個單一的請求的情況下要求他們?
不幸的是,Trace
class沒有辦法把跟蹤/關閉取決於你要解決在每個請求的基礎條件。這是一種全有或全無的方法。
也就是說,我高度推薦MVC MiniProfiler(這裏使用的堆棧交換網站,最顯着的是公衆在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的範圍,然後就抽成我的視圖模型。