当前位置: 首页 > 科技观察

说说ASP.NETCore中的配置

时间:2023-03-18 14:29:41 科技观察

本文转载自微信公众号,转载请联系UP技控公众号。背景ASP.NETCore提供了一个灵活且可扩展的、基于键值的配置系统。但配置系统独立于ASP.NETCore,是Microsoft.Extensions类库的一部分。它可用于任何类型的应用程序。1.读取键值对形式的配置{"Position":{"Title":"Editor","Name":"JoeSmith"},"MyKey":"Myappsettings.jsonValue","Logging":{"LogLevel":{"Default":"Information","Microsoft":"Warning","Microsoft.Hosting.Lifetime":"Information"}},"AllowedHosts":"*"}在ConfigureServices方法中添加如下测试代码:varmyKeyValue=Configuration["MyKey"];vartitle=Configuration["Position:Title"];varname=Configuration["Position:Name"];vardefaultLogLevel=Configuration["Logging:LogLevel:Default"];2.环境配置使用默认配置,EnvironmentVariablesConfigurationProvider会在读取appsettings.json、appsettings.Environment.json和secretmanager后从环境变量键值对加载配置。因此,从环境中读取的键值会覆盖从appsettings.json、appsettings.Environment.json和秘密管理器中读取的值。launchSettings.json中设置的环境变量,launchSettings.json中设置的环境变量会覆盖系统环境中设置的变量。3.读取结构化配置数据,在配置文件中添加一个对应subsection节点的类TestSubSectionConfig使用GetSection解析配置文件的sectionvarsubsectionOptions=Configuration.GetSection("subsection").Get();varsuboption2=subsectionOptions.SubOption2;Console.WriteLine($"subsection:suboption2:{suboption2}");如果需要在Controller中使用,可以使用依赖注入:在ConfigureServices中注册配置项。publicvoidConfigureServices(IServiceCollectionservices){//注册配置到服务容器services.Configure(Configuration.GetSection("subsection"));//varsubsectionOptions=Configuration.GetSection("subsection").Get();//services.Configure(options=>//{//options.SubOption1=subsectionOptions["suboption1"];//options.SubOption2=subsectionOptions["suboption2"];//});}publicclassHomeController:Controller{privateTestSubSectionConfig_subSectionConfig;privateILogger_logger;publicHomeController(IOptions选项,ILogger记录器){_subSectionConfig=option.Value;_logger=logger;}publicIActionResultIndex(){_logger.LogInformation($"SubOption1:{_subSectionConfig.SubOption1}");_logger.LogInformation($"SubOption2:{_subSectionConfig.SubOption2}");returnView();}}