示例#1
0
        /// <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());
 }
示例#3
0
        /// <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>();