2011-07-11 13 views
28

Acabo de empezar a usar el mvc-mini-profiler (http://code.google.com/p/mvc-mini-profiler/) y creo que es increíble. Sin embargo, estoy obteniendo un comportamiento extraño mientras lo uso.Mini perfil MVC: parece mostrar los tiempos de perfil para cada recurso estático

Tengo un sitio Webforms de ASP.NET ejecutándose en IIS7.5 y por alguna razón cuando cargo una página con el generador de perfiles habilitado, no solo obtengo una medición de tiempo para la página aspx, sino que también la obtengo para los recursos aleatorios de css y js en la página.

El perfil aspx funciona correctamente, y la consulta SQL también se perfila correctamente. Sin embargo, como muestra la imagen, también recibo muchos otros resultados que parecen ser resultados para CSS estáticos y archivos JS. Hasta donde puedo decir, IIS los está atendiendo de forma estática, por lo que ni siquiera se debe invocar el código del perfilador para estos.

Las partes pertinentes de mi Global.asax son:

protected void Application_BeginRequest() 
    { 
     MiniProfiler profiler = null; 

     // might want to decide here (or maybe inside the action) whether you want 
     // to profile this request - for example, using an "IsSystemAdmin" flag against 
     // the user, or similar; this could also all be done in action filters, but this 
     // is simple and practical; just return null for most users. For our test, we'll 
     // profile only for local requests (seems reasonable) 
     profiler = MiniProfiler.Start(); 

     using (profiler.Step("Application_BeginRequest")) 
     { 
      // you can start profiling your code immediately 
     } 
    } 

    protected void Application_EndRequest() 
    { 
     MvcMiniProfiler.MiniProfiler.Stop(); 
    } 

    protected void Application_AuthenticateRequest(object sender, EventArgs e) 
    { 
     if (User == null || !User.Identity.IsAuthenticated) 
     { 
      MvcMiniProfiler.MiniProfiler.Stop(true); 
     } 
    } 

Se espera que este comportamiento?

Respuesta

45

Sí, esto es correcto, pero es muy fácil filtrarlos.

Tomado del código de ejemplo en el proyecto Source

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 

    // some things should never be seen 
    var ignored = MiniProfiler.Settings.IgnoredPaths.ToList(); 

    ignored.Add("WebResource.axd"); 
    ignored.Add("/Styles/"); 

    MiniProfiler.Settings.IgnoredPaths = ignored.ToArray(); 
} 

Esto le permite filtrar lo que quiere ver o no esto es una muestra de lo que he excluido en mi aplicación web que estoy encontrando es trabajando para mi aplicación

ignored.Add("WebResource.axd"); 
ignored.Add("ScriptResource.axd"); 
ignored.Add("/Styles/"); 
ignored.Add("/Images/"); 
ignored.Add(".js"); 
+0

que tenía que actualizar mi versión del perfilador, pero esto parece haber funcionado .... – growse

+0

Una cosa que he notado con el código más reciente es que hay algo de código de depuración que se ha dejado en y causa algunos problemas con IE. He registrado un problema en el rastreador de problemas Problema 53 –

+0

Voy a estar atento, gracias. Todos nuestros desarrolladores están en Chrome/FF, así que no estoy tan preocupado. – growse

1

En realidad, puede poner eso en una línea y también omitir las barras. De esta manera:

protected void Application_BeginRequest() 
    { 
     if (Request.IsLocal) 
     { 
      MiniProfiler.Start(); 
      MiniProfiler.Settings.IgnoredPaths = new[] { "static", "webresource.axd", "styles", "images" }; 
     } 
    }