init
This commit is contained in:
88
DouyinApi.Extensions/ServiceExtensions/MiniProfilerSetup.cs
Normal file
88
DouyinApi.Extensions/ServiceExtensions/MiniProfilerSetup.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user