2011-11-24 25 views
4

我在我的asp.net MVC 3應用程序上使用mini-profiler。我已經使用mvc nuget包實現了分析器。一切工作正常的標準頁面請求我得到配置文件信息SQL的一切。迷你profiler不顯示ajax請求信息?

然而,ajax請求似乎並沒有顯示在最初。只是讓我確認請求完成沒有錯誤。我已經調試了這一點,他們完成了他們也在小提琴手中返回http 200響應。

迷你分析器沒有伴隨ajax請求的請求。當我然後導航到另一個頁面,即標準頁面請求時,現在顯示在最後一頁上所做的所有ajax請求。

這是App_Start

public static class MiniProfilerPackage 
    { 
     public static void PreStart() 
     { 
      //Setup sql formatter 
      MiniProfiler.Settings.SqlFormatter = new OracleFormatter(); 

      //Make sure the MiniProfiler handles BeginRequest and EndRequest 
      DynamicModuleUtility.RegisterModule(typeof(MiniProfilerStartupModule)); 

      //Setup profiler for Controllers via a Global ActionFilter 
      GlobalFilters.Filters.Add(new ProfilingActionFilter()); 

      //Settings    
      MiniProfiler.Settings.PopupShowTimeWithChildren = true; 
      MiniProfiler.Settings.PopupShowTrivial = false;    

      //Ignore glimpse details in miniprofiler 
      var ignored = MiniProfiler.Settings.IgnoredPaths.ToList(); 
      ignored.Add("Glimpse.axd"); 
      MiniProfiler.Settings.IgnoredPaths = ignored.ToArray(); 
     } 

     public static void PostStart() 
     { 
      // Intercept ViewEngines to profile all partial views and regular views. 
      // If you prefer to insert your profiling blocks manually you can comment this out 
      var copy = ViewEngines.Engines.ToList(); 
      ViewEngines.Engines.Clear(); 
      foreach (var item in copy) 
      { 
       ViewEngines.Engines.Add(new ProfilingViewEngine(item)); 
      } 
     } 
    } 

    public class MiniProfilerStartupModule : IHttpModule 
    { 
     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += (sender, e) => 
      { 
       var request = ((HttpApplication)sender).Request; 

       MiniProfiler.Start(); 
      }; 

      //Profiling abadened if user is not in the admin role 
      context.PostAuthorizeRequest += (sender, e) => 
      { 
       if (!context.User.IsInRole("Admin")) 
        MiniProfiler.Stop(discardResults: true); 
      }; 

      context.EndRequest += (sender, e) => 
      { 
       MiniProfiler.Stop(); 
      }; 
     } 

     public void Dispose() { } 
    } 

我的迷你探查配置頁面是否有需要進行一些配置或潛在的問題,我應該知道的?

回答

8

最後我發現添加到頁面的Miniprofiler JavaScript塊必須在頁面jquery引用之下。

爲了達到最佳實踐性能的原因,我們的JavaScript引用全部添加在頁面末尾。

但是我在頁眉中留下了@ MvcMiniProfiler.MiniProfiler.RenderIncludes()。將它移動到頁面底部的jquery腳本ref下面可以解決我的問題。

+0

其實它的工作對我來說,如果我把miniprofiler高於渲染我所有的JavaScript代碼(包括jQuery的)。怪怪的? –

+0

@KatLimRuiz我想現在他們可能會用miniprofiler打包一個jquery版本。 –

0

剛剛發現了同樣的情況,如果重複

$.ajaxSetup({ 
    global: false 
});