c# - pages - Perfil de Mini MVC: parece estar mostrando tiempos de perfil para cada recurso estático
github asp net mvc (2)
Acabo de empezar a usar mvc-mini-profiler ( http://code.google.com/p/mvc-mini-profiler/ ) y creo que es increíble. Sin embargo, tengo un comportamiento extraño mientras lo uso.
Tengo un sitio de formularios web ASP.NET que se ejecuta 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 css al azar. js recursos 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 obtengo un montón de otros resultados que parecen ser resultados para archivos CSS y JS estáticos. Por lo que puedo decir, IIS los atiende de forma estática, por lo que el código del generador de perfiles no debería invocarse para estos.
Las partes relevantes 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 este comportamiento?
Realmente puedes poner eso en una línea y también omitir las barras. Me gusta esto:
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MiniProfiler.Start();
MiniProfiler.Settings.IgnoredPaths = new[] { "static", "webresource.axd", "styles", "images" };
}
}
Sí, esto es correcto, pero es muy fácil filtrarlos.
Tomado del código de muestra 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. Esta es una muestra de lo que he excluido en mi aplicación web, lo que encuentro que está funcionando para mi aplicación.
ignored.Add("WebResource.axd");
ignored.Add("ScriptResource.axd");
ignored.Add("/Styles/");
ignored.Add("/Images/");
ignored.Add(".js");