使用MiniProfiler和MVC 5

时间:2014-03-29 05:45:18

标签: asp.net-mvc mvc-mini-profiler

修改 得到了答案here

所以我想查看MiniProfiler来解决一些性能问题。 在将其用于生产代码之前,我想尝试使用样本,然后继续创建MVC 5应用程序。这是使用模板创建的简单的vanilla应用程序。

在HomeController的Index()方法中添加了此代码:

var profiler = MiniProfiler.Current;
        using (profiler.Step("Set page title"))
        {
            ViewBag.Title = "Home Page";
        }
        using (profiler.Step("Doing complex stuff"))
        {
            using (profiler.Step("Step A"))
            { // something more interesting here
                Thread.Sleep(100);
            }
            using (profiler.Step("Step B"))
            { // and here
                Thread.Sleep(250);
            }
        }
        return View();

在_Layout:

中的jquery包下面添加了这一行
@Scripts.Render("~/bundles/jquery")
@StackExchange.Profiling.MiniProfiler.RenderIncludes()

@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)

跑完应用程序。 什么都没有出现。没有剖析,没有。

我错过了什么?

问候。

2 个答案:

答案 0 :(得分:29)

这是我在Mini ASP.NET MVC5 项目中使用MiniProfiler所必须做的事情:

  1. 安装 MiniProfiler MiniProfiler.MVC4 NuGet包(MVC4包支持MVC5)

  2. 将以下内容添加到Global.asax中的Application_Start()

    protected void Application_Start()
    {
        ...
        // Setup profiler for Controllers via a Global ActionFilter
        GlobalFilters.Filters.Add(new ProfilingActionFilter());
    
        // initialize automatic view profiling
        var copy = ViewEngines.Engines.ToList();
        ViewEngines.Engines.Clear();
        foreach (var item in copy)
        {
            ViewEngines.Engines.Add(new ProfilingViewEngine(item));
        }
    }
    
  3. 将以下内容添加到' Application_BeginRequest()'和' Application_EndRequest()',也在Global.asax:

    protected void Application_BeginRequest()
    {
        if (Request.IsLocal)
        {
            MiniProfiler.Start();
        }
    }
    
    protected void Application_EndRequest()
    {
        MiniProfiler.Stop();
    }
    
  4. 将以下内容添加到_Layout.cshtml(</body>标记之前):

        ...
        @StackExchange.Profiling.MiniProfiler.RenderIncludes()
    </body>
    </html>
    
  5. 将以下内容添加到Web.config的<handlers>部分:

    <system.webServer>
        ...
        <handlers>
            ...
            <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*"
                 type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified"
                 preCondition="integratedMode" />
            ...
        </handlers>
    </system.webServer>
    
  6. 这足以分析每个MVC控制器操作和视图。

    在我的特定项目中,我使用的是Entity Framework 6,所以我也做了以下事情:

    a)安装 MiniProfiler.EF6

    b)在Global.asax的Application_Start()末尾添加以下内容:

        ...
        MiniProfilerEF6.Initialize();
    }
    

答案 1 :(得分:5)

您还必须添加电话:

MiniProfiler.Start();

在Global.asax.cs到Application_BeginRequest事件。

MiniProfiler.Stop();

在Global.asax.cs到Application_EndRequest事件。