在WebApi專案裡使用MiniProfiler並且分析 Entity Framework Core

班納青辰發表於2019-07-26

在WebApi專案裡使用MiniProfiler並且分析 Entity Framework Core

一、安裝配置MiniProfiler

在現有的ASP.NET Core MVC WebApi 專案裡,通過Nuget安裝MiniProfiler

Install-Package MiniProfiler.AspNetCore.Mvc MiniProfiler.EntityFrameworkCore

當然也可以通過Nuget Package Manager視覺化工具安裝

11.png

接下來就是如何配置和使用 MiniProfiler 了,總共分三步:

第一步,來到Startup.csConfigureServices方法裡,新增services.AddMiniProfiler();

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DataContext")));

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

        // 首先新增一個配置選項,用於訪問分析結果:
        services.AddMiniProfiler(options =>
        {
            // 設定彈出視窗的位置是左下角
            options.PopupRenderPosition = RenderPosition.BottomLeft;
            // 設定在彈出的明細視窗裡會顯式Time With Children這列
            options.PopupShowTimeWithChildren = true;
            // 設定訪問分析結果URL的路由基地址
            options.RouteBasePath = "/profiler";
        })
        // 然後在之前的配置後邊加上AddEntityFramework():
        .AddEntityFramework();
    }

第二步,來到來到Startup.csConfigure方法裡,新增app.UseMiniProfiler();

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...

        // 最重要的一點是就是配置中介軟體在管道中的位置,一定要把它放在UseMvc()方法之前。 
        app.UseMiniProfiler();

        app.UseMvc();
    }

第三步、執行程式,一共有3個可檢視分析結果相關的URL地址:

1./profiler/results-index

  • 先看results-index頁面:

12.png

它表示每次呼叫API的記錄結果。可以看到本次呼叫API的總時間為1578.4毫秒。

2./profiler/results

  • 從result-index頁面點選連結進入這次API呼叫的詳細結果頁面,也就是result頁面:

13.png

它表示每次呼叫API的過程分析結果,具體到每一條SQL語句的內容和執行時間。

3./profiler/results-list

  • 再看result-list頁面:

14.png

它其實就表示每個API的所有呼叫記錄結果的集合。

三、案例原始碼:

MiniProfilerCoreWebApiDemo

相關文章