网站建设网站公司哪家好,网站建设的书籍,免费网络翻外墙软件,网站开发有几个阶段前文讲获取配置文件内容的时候#xff0c;是获取默认的appsettings.json配置文件的配置#xff0c;下面说明下如何进行自定义配置文件获取1. Json Provider1.1 构建独立的IConfiguration编写方法public static IConfigurationRoot LoadSettings(this IHostEnvironment env){r… 前文讲获取配置文件内容的时候是获取默认的appsettings.json配置文件的配置下面说明下如何进行自定义配置文件获取1. Json Provider1.1 构建独立的IConfiguration编写方法 public static IConfigurationRoot LoadSettings(this IHostEnvironment env){return new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile(common.json, optional: true, reloadOnChange: false).AddJsonFile(appsettings.json, optional: true, reloadOnChange: false).AddJsonFile($appsettings.{env.EnvironmentName}.json, optional: true, reloadOnChange: false).AddEnvironmentVariables().Build();}
在Startup构造函数的时候进行赋值替换IConfiguration private readonly IConfiguration _configuration;public Startup(IWebHostEnvironment env){_configuration env.LoadSettings();}
该操作添加的配置项只在startup范围生效。1.2 在Progrom全局自定义配置 public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) {var env hostingContext.HostingEnvironment;config.SetBasePath(env.ContentRootPath);config.AddJsonFile(devappsettings.json, optional: false, reloadOnChange: true);}).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});
注意添加自定义文件的目录要注意可能会存在因为目录问题所以找不到配置文件的情况。2. Memory Provider允许我们将一个应用程序配置直接配置到内存中而不是像传统方式那样子必须制定一个物理文件。 var builder new ConfigurationBuilder();var profileCollection new Dictionarystring, string{{AuthorProfile:FirstName, Joydip},{AuthorProfile:LastName, Kanjilal},{AuthorProfile:Address, Hyderabad, India}};builder.AddInMemoryCollection(profileCollection);Configuration builder.Build();
使用 public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) {var builder new ConfigurationBuilder();var profileCollection new Dictionarystring, string{{AuthorProfile:FirstName, Joydip},{AuthorProfile:LastName, Kanjilal},{AuthorProfile:Address, Hyderabad, India}};builder.AddInMemoryCollection(profileCollection);config.AddConfiguration(builder.Build());}).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});
然后就可以通过IConfiguration实例去获取了。3. 公共类获取配置文件引用组件Microsoft.Extensions.Configuration.Json public class AppSettings{private static IConfiguration Configuration { get; set; }public AppSettings(IConfiguration configuration){Configuration configuration;}/// summary/// 封装要操作的字符/// /summary/// param nameps/param/// returns/returnspublic static string GetValue(params string[] ps){try{if (ps.Any())return Configuration[string.Join(:, ps)];}catch (Exception){ }return ;}/// summary/// 递归获取配置信息数组///引用 Microsoft.Extensions.Configuration.Binder 包/// /summary/// typeparam nameT/typeparam/// param nameps/param/// returns/returnspublic static ListT AppT(params string[] ps){ListT list new ListT();Configuration.Bind(string.Join(:, ps), list);return list;}}
参考自https://gitee.com/laozhangIsPhi/Blog.CoreConfigureServices中配置services.AddSingleton(new AppSettings(Configuration));
获取指定配置var info AppSettings.GetValue(Logging, LogLevel);