2014-03-29 12 views
13

bearbeiten die Antwort erhielt hereMit Miniprofiler mit 5 MVC

Also wollte ich Miniprofiler überprüfen, einige Performance-Probleme zu beheben. Bevor ich es für den Produktionscode verwenden wollte, wollte ich es mit dem Beispiel ausprobieren, also habe ich eine MVC 5-Anwendung erstellt. Dies ist Plain Vanilla App, die mit der Vorlage erstellt wird.

Added dieser Codes im Index() Methode des Homecontroller:

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

hinzugefügt, um diese Linie unterhalb dem jquery Bündel in _Layout:

@Scripts.Render("~/bundles/jquery") 
@StackExchange.Profiling.MiniProfiler.RenderIncludes() 

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

lief die App. Nichts zeigt sich. Kein Profiling, nichts.

Was fehlt mir?

Grüße.

Antwort

5

Auch müssen Sie Anruf hinzufügen:

MiniProfiler.Start(); 

In Global.asax.cs zu Application_BeginRequest Ereignis.

Und:

MiniProfiler.Stop(); 

In Global.asax.cs zu Application_EndRequest Ereignis.

27

Dies ist, was ich in meiner Arbeit Miniprofiler ASP.NET MVC5 Projekt zu tun hatte, zu bekommen:

  1. Installiert die Miniprofiler und MiniProfiler.MVC4 NuGet Pakete (die MVC4 Paket unterstützt MVC5)

  2. folgendes Application_Start() in Global.asax hinzufügen:

    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. Fügen Sie den folgenden zu 'Application_BeginRequest()' und 'Application_EndRequest()', auch in Global.asax:

    protected void Application_BeginRequest() 
    { 
        if (Request.IsLocal) 
        { 
         MiniProfiler.Start(); 
        } 
    } 
    
    protected void Application_EndRequest() 
    { 
        MiniProfiler.Stop(); 
    } 
    
  4. Folgendes _Layout.cshtml (kurz vor dem </body>-Tag) hinzufügen:

    ... 
        @StackExchange.Profiling.MiniProfiler.RenderIncludes() 
    </body> 
    </html> 
    
  5. Fügen Sie folgende an dem <handlers> Abschnitt Web.config:

    <system.webServer> 
        ... 
        <handlers> 
         ... 
         <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" 
          type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" 
          preCondition="integratedMode" /> 
         ... 
        </handlers> 
    </system.webServer> 
    

Das war genug, um jede der MVC Controller Aktionen und Ansichten zu profilieren.


In meinem Projekt war ich mit Entity Framework 6, so habe ich auch die folgenden:

a) installiert, um die MiniProfiler.EF6 Paket

b) hinzugefügt Folgendes die Ende der Application_Start() in Global.asax:

... 
    MiniProfilerEF6.Initialize(); 
} 
+0

Awesome, ich war nicht über die Möglichkeit zur automatischen Steuerung & view Profilierungs – Squazz