88 lines
3.7 KiB
C#
88 lines
3.7 KiB
C#
|
|
using DouyinApi.Common;
|
|||
|
|
using Microsoft.Extensions.DependencyInjection;
|
|||
|
|
using System;
|
|||
|
|
using DouyinApi.Common.Https;
|
|||
|
|
using DouyinApi.Common.Option;
|
|||
|
|
using DouyinApi.Common.Swagger;
|
|||
|
|
using Microsoft.AspNetCore.Http;
|
|||
|
|
using Microsoft.Extensions.Caching.Memory;
|
|||
|
|
using StackExchange.Profiling;
|
|||
|
|
using StackExchange.Profiling.SqlFormatters;
|
|||
|
|
using StackExchange.Profiling.Storage;
|
|||
|
|
using StackExchange.Redis;
|
|||
|
|
|
|||
|
|
namespace DouyinApi.Extensions
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// MiniProfiler 启动服务
|
|||
|
|
/// </summary>
|
|||
|
|
public static class MiniProfilerSetup
|
|||
|
|
{
|
|||
|
|
public static void AddMiniProfilerSetup(this IServiceCollection services)
|
|||
|
|
{
|
|||
|
|
if (services == null) throw new ArgumentNullException(nameof(services));
|
|||
|
|
if (!AppSettings.app("Startup", "MiniProfiler", "Enabled").ObjToBool()) return;
|
|||
|
|
|
|||
|
|
//使用MiniProfiler
|
|||
|
|
services.AddMiniProfiler(options =>
|
|||
|
|
{
|
|||
|
|
//访问地址路由根目录;默认为:/mini-profiler-resources
|
|||
|
|
//options.RouteBasePath = "/profiler";
|
|||
|
|
//数据缓存时间
|
|||
|
|
//获取redis配置
|
|||
|
|
var redisOptions = App.GetOptions<RedisOptions>();
|
|||
|
|
if (redisOptions.Enable)
|
|||
|
|
options.Storage =
|
|||
|
|
new RedisStorage((ConnectionMultiplexer)App.GetService<IConnectionMultiplexer>());
|
|||
|
|
else
|
|||
|
|
options.Storage = new MemoryCacheStorage(App.GetService<IMemoryCache>(), TimeSpan.FromMinutes(60));
|
|||
|
|
|
|||
|
|
//sql格式化设置
|
|||
|
|
options.SqlFormatter = new InlineFormatter();
|
|||
|
|
//跟踪连接打开关闭
|
|||
|
|
options.TrackConnectionOpenClose = true;
|
|||
|
|
//界面主题颜色方案;默认浅色
|
|||
|
|
options.ColorScheme = ColorScheme.Dark;
|
|||
|
|
//.net core 3.0以上:对MVC过滤器进行分析
|
|||
|
|
options.EnableMvcFilterProfiling = true;
|
|||
|
|
//对视图进行分析
|
|||
|
|
options.EnableMvcViewProfiling = true;
|
|||
|
|
|
|||
|
|
//控制访问页面授权,默认所有人都能访问
|
|||
|
|
//options.ResultsAuthorize;
|
|||
|
|
//要控制分析哪些请求,默认说有请求都分析
|
|||
|
|
//options.ShouldProfile
|
|||
|
|
|
|||
|
|
//内部异常处理
|
|||
|
|
//options.OnInternalError = e => MyExceptionLogger(e);
|
|||
|
|
//options.RouteBasePath = "/profiler";
|
|||
|
|
|
|||
|
|
//(options.Storage as MemoryCacheStorage).CacheDuration = TimeSpan.FromMinutes(10);
|
|||
|
|
options.PopupRenderPosition = RenderPosition.Left;
|
|||
|
|
options.PopupShowTimeWithChildren = true;
|
|||
|
|
|
|||
|
|
//只监控api 接口
|
|||
|
|
options.ShouldProfile = ShouldProfile;
|
|||
|
|
|
|||
|
|
// 可以增加权限
|
|||
|
|
// options.ResultsAuthorize = request =>
|
|||
|
|
// {
|
|||
|
|
// if (request.IsLocal()) return true;
|
|||
|
|
//
|
|||
|
|
// var path = request.HttpContext.Request.Path.Value;
|
|||
|
|
// if (path == null || !path.StartsWith(options.RouteBasePath)) return true;
|
|||
|
|
//
|
|||
|
|
// var flag = request.HttpContext.IsSuccessSwagger();
|
|||
|
|
// if (!flag) request.HttpContext.RedirectSwaggerLogin();
|
|||
|
|
// return flag;
|
|||
|
|
// };
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static bool ShouldProfile(HttpRequest request)
|
|||
|
|
{
|
|||
|
|
return request.Path.StartsWithSegments("/api");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|