2012-07-04 43 views
2

我希望能夠在MVC跟蹤,具體而言,我想表明跟蹤頁面上,如果滿足特定條件。MVC跟蹤具體要求只有

是否有可能使System.Diagnostics.Trace寫入顯示當且僅當我在一個單一的請求的情況下要求他們?

回答

3

不幸的是,Trace class沒有辦法把跟蹤/關閉取決於你要解決在每個請求的基礎條件。這是一種全有或全無的方法。

也就是說,我高度推薦MVC MiniProfiler(這裏使用的堆棧交換網站,最顯着的是公衆在Stack Exchange Data Explorer)。

你基本上得到一個渲染頁面上是這樣的:

MiniProfiler screenshot

,你可以設置在分析上的每個請求的基礎:

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有令人討厭的習慣,使頁面看起來很奇怪)。

0

我最終使出傳遞一個記錄器通過我的課,然後有條件地顯示需要在控制器的信息在哪裏。

使用的容器,我結合我的記錄器實例的HttpContext的範圍,然後就抽成我的視圖模型。