2013-02-07 38 views
4

我有一個簡單的網頁表單應用程序,使用母版頁。什麼是簡單的方法來啓用一個會話的Mini-profiler?

我按照如何讓mini-profiler工作的說明。我得到所有的統計數據。現在我不知道如何打開或關閉它。

我想過使用查詢字符串並尋找它Application_BeginRequest - 如果那裏只是使用分析器的整個會話....好吧,會話不會在該階段加載,如果使用Application_AcquireRequestState和一個靜態變量它會加載很多次,並且分析器有時會工作,有時候不會,我不知道爲什麼?

我現在的簡單方法是。

protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      MiniProfiler profiler = null; 

      if (Request.QueryString["p"] != null) 
      { 

       profiler = MiniProfiler.Start(); 

       using (profiler.Step("Application_BeginRequest")) 
       { 
       } 
      } 


     } 

因此,這工作正常,但我必須在每個請求上添加一個查詢參數。不好。我之前從未使用過global.asax,所以我不能100%確定它是如何在那裏工作的。

什麼是我可以在預先定義的時間內設置變量的最佳方式,因此當我以祕密方式打開時,分析器將始終加載?


編輯和解決我的問題

protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      MiniProfiler profiler = null; 
      if (Request.Cookies["profiler"] != null) 
      { 
       profiler = MiniProfiler.Start(); 

       using (profiler.Step("Application_BeginRequest")) 
       { 
       } 
      } 

     } 

回答

4

如果通過MiniProfiler.MVC3包添加MiniProfiler,然後將其添加爲它配置您的方便,C#文件:看在App_Start\MiniProfiler.cs,在看特別是在Init其中有代碼來決定是否開始分析(request.IsLocal是默認值)

在你的情況,我會建議檢查一個cookie在開始條件,並在結束條件檢查您的更完整的「我是一名開發人員,或只是聽說過特殊cookie的人」;特別是如果您撥打MiniProfiler.Stop(false),則所有數據都將被丟棄。然後,您可以通過cookie以低成本實現「以祕密方式開啓」和「預先確定的時間」,並通過「我是開發人員」來確保它不會僅僅通過設置cookie而被濫用。

+0

嗨,我使用了'nuget',它只是添加了參考庫。但我沒有想到餅乾!是的 - 這工作,現在我可以控制它。謝謝! – ppumkin

相關問題