using NCC.ConfigurableOptions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using System; namespace NCC { /// /// 应用全局配置 /// public sealed class AppSettingsOptions : IConfigurableOptions { /// /// 集成 MiniProfiler 组件 /// public bool? InjectMiniProfiler { get; set; } /// /// 是否启用规范化文档 /// public bool? InjectSpecificationDocument { get; set; } /// /// 是否启用引用程序集扫描 /// public bool? EnabledReferenceAssemblyScan { get; set; } /// /// 外部程序集 /// public string[] ExternalAssemblies { get; set; } /// /// 是否打印数据库连接信息到 MiniProfiler 中 /// public bool? PrintDbConnectionInfo { get; set; } /// /// 是否输出原始 Sql 执行日志(ADO.NET) /// public bool? OutputOriginalSqlExecuteLog { get; set; } /// /// 配置支持的包前缀名 /// public string[] SupportPackageNamePrefixs { get; set; } /// /// 【部署】二级虚拟目录 /// public string VirtualPath { get; set; } /// /// 后期配置 /// /// /// public void PostConfigure(AppSettingsOptions options, IConfiguration configuration) { // 非 Web 环境总是 false,如果是生产环境且不配置 InjectMiniProfiler,默认总是false,MiniProfiler 生产环境耗内存 if (App.WebHostEnvironment == default || (App.HostEnvironment.IsProduction() && options.InjectMiniProfiler == null)) options.InjectMiniProfiler = false; else options.InjectMiniProfiler ??= true; options.InjectSpecificationDocument ??= true; options.EnabledReferenceAssemblyScan ??= false; options.ExternalAssemblies ??= Array.Empty(); options.PrintDbConnectionInfo ??= true; options.OutputOriginalSqlExecuteLog ??= true; options.SupportPackageNamePrefixs ??= Array.Empty(); options.VirtualPath ??= string.Empty; } } }