2011-11-24 58 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 
});