Профилировщик Mini MVC: отображается время профиля для каждого статического ресурса.

Я только начал использовать mvc-mini-profiler (http://code.google.com/p/mvc-mini-profiler/), и я думаю, что это здорово. Тем не менее, я получаю странное поведение при его использовании.

У меня есть сайт ASP.NET Webforms, работающий на IIS7.5, и по какой-то причине, когда я загружаю страницу с включенным профилировщиком, я не только получаю измерение времени для страницы aspx, но также получаю его для случайного css и js ресурсы на странице.

Профиль aspx работает правильно, SQL-запрос также правильно профилируется. Однако, как показано на рисунке, я также получаю множество других результатов, которые кажутся результатами для статических файлов CSS и JS. Насколько я могу судить, IIS обслуживает их статически, поэтому код профилировщика даже не должен вызываться для них.

Соответствующие части моего Global.asax:

    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);
        }
    }

Ожидается ли такое поведение?


person growse    schedule 11.07.2011    source источник


Ответы (2)


Да, это правильно, но их очень легко отфильтровать.

Взято из примера кода в проекте Источник

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();
}

Это позволяет вам отфильтровать то, что вы хотите видеть, или нет. Это пример того, что я исключил в своем веб-приложении, которое, как я обнаружил, работает для моего приложения.

ignored.Add("WebResource.axd");
ignored.Add("ScriptResource.axd");
ignored.Add("/Styles/");
ignored.Add("/Images/");
ignored.Add(".js");
person Mike B    schedule 11.07.2011
comment
Одна вещь, которую я заметил в последнем коде, это то, что есть некоторый код отладки, который был оставлен и вызывает некоторые проблемы с IE. Я зарегистрировал проблему в системе отслеживания проблем Issue 53 - person Mike B; 11.07.2011
comment
Буду следить - спасибо. Все наши разработчики используют Chrome/FF, так что я не сильно беспокоюсь. - person growse; 11.07.2011

Вы можете поместить это в одну строку, а также опустить косую черту. Нравится:

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