在WebApi專案裡使用MiniProfiler並且分析 Entity Framework Core
一、安裝配置MiniProfiler
在現有的ASP.NET Core MVC WebApi 專案裡,通過Nuget安裝MiniProfiler
:
Install-Package MiniProfiler.AspNetCore.Mvc MiniProfiler.EntityFrameworkCore
當然也可以通過Nuget Package Manager
視覺化工具安裝
接下來就是如何配置和使用 MiniProfiler 了,總共分三步:
第一步,來到Startup.cs
的ConfigureServices
方法裡,新增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.cs
的Configure
方法裡,新增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頁面:
它表示每次呼叫API的記錄結果。可以看到本次呼叫API的總時間為1578.4毫秒。
2./profiler/results
- 從result-index頁面點選連結進入這次API呼叫的詳細結果頁面,也就是result頁面:
它表示每次呼叫API的過程分析結果,具體到每一條SQL語句的內容和執行時間。
3./profiler/results-list
- 再看result-list頁面:
它其實就表示每個API的所有呼叫記錄結果的集合。