/// <summary> /// 返回所有脱敏词汇 /// </summary> /// <returns></returns> public async Task <IEnumerable <string> > GetWordsAsync() { // 读取缓存数据 var wordsCached = await _distributedCache.GetStringAsync(DISTRIBUTED_KEY); if (wordsCached != null) { return(wordsCached.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)); } var entryAssembly = Reflect.GetEntryAssembly(); // 解析嵌入式文件流 byte[] buffer; using (var readStream = entryAssembly.GetManifestResourceStream($"{Reflect.GetAssemblyName(entryAssembly)}.sensitive-words.txt")) { buffer = new byte[readStream.Length]; await readStream.ReadAsync(buffer.AsMemory(0, buffer.Length)); } var content = Encoding.UTF8.GetString(buffer); // 缓存数据 await _distributedCache.SetStringAsync(DISTRIBUTED_KEY, content); // 取换行符分割字符串 var words = content.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); return(words); }
/// <summary> /// 选项后期配置 /// </summary> /// <param name="options"></param> /// <param name="configuration"></param> public void PostConfigure(LocalizationSettingsOptions options, IConfiguration configuration) { ResourcesPath ??= "Resources"; SupportedCultures ??= Array.Empty <string>(); DefaultCulture ??= string.Empty; LanguageFilePrefix ??= "Lang"; AssemblyName ??= Reflect.GetAssemblyName(Reflect.GetEntryAssembly()); }
/// <summary> /// Web 主机注入 /// </summary> /// <param name="hostBuilder">Web主机构建器</param> /// <param name="assemblyName">外部程序集名称</param> /// <returns>IWebHostBuilder</returns> public static IWebHostBuilder Inject(this IWebHostBuilder hostBuilder, string assemblyName = default) { // 获取默认程序集名称 var defaultAssemblyName = assemblyName ?? Reflect.GetAssemblyName(typeof(HostBuilderExtensions)); // 获取环境变量 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 配置 var environmentVariables = Environment.GetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"); var combineAssembliesName = $"{defaultAssemblyName};{environmentVariables}".ClearStringAffixes(1, ";"); hostBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, combineAssembliesName); return(hostBuilder); }
/// <summary> /// 后期配置 /// </summary> /// <param name="options"></param> /// <param name="configuration"></param> public void PostConfigure(SpecificationDocumentSettingsOptions options, IConfiguration configuration) { options.DocumentTitle ??= "Specification Api Document"; options.DefaultGroupName ??= "Default"; options.FormatAsV2 ??= false; //options.RoutePrefix ??= "api"; // 可以通过 UseInject() 配置,所以注释 options.DocExpansionState ??= DocExpansion.List; // 加载项目注册和模块化/插件注释 var frameworkPackageName = Reflect.GetAssemblyName(GetType()); var projectXmlComments = App.Assemblies.Where(u => u.GetName().Name != frameworkPackageName).Select(t => t.GetName().Name); var externalXmlComments = App.ExternalAssemblies.Any() ? App.Settings.ExternalAssemblies.Select(u => u.EndsWith(".dll") ? u[0..^ 4] : u) : Array.Empty <string>();