ASP.NET读取配置文件的多种方式详解
每个ASP.NET Core项目自带的appsettings.json,算是默认的配置中心。创建项目时,它就会自动生成,我们可以把各种配置信息丢进去。最方便的一点是,改了配置不需要重启应用,就能热生效。 { "Logging": { "LogLevel": { "Default": "Informa
每个ASP.NET Core项目自带的appsettings.json,算是默认的配置中心。创建项目时,它就会自动生成,我们可以把各种配置信息丢进去。最方便的一点是,改了配置不需要重启应用,就能热生效。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"msg": "hello world"
}
IConfiguration
先看一个最基础的用法,通过路由终结点来演示如何读取配置。通过IOC容器注入IConfiguration对象,就能读取不同层级的内容。单层节点直接拿键名,多层级的用冒号分隔路径。
app.MapGet("config", (IConfiguration configuration) =>{
return configuration["msg"] + "_" +
configuration["Logging:LogLevel:Default"];
});
这种方式很直白,但取值时要注意键名拼写,尤其嵌套层级深的时候,路径容易写错。不过对于简单场景,它够用了。
通过GetValue方法获取
另一种方式是用GetValue
app.MapGet("config", (IConfiguration configuration) =>{
return configuration.GetValue("msg");
});
注意,GetValue是强类型方法,但有个限制——它只能读基本类型,比如字符串、数字之类。如果试图用它读取一个对象或复杂类型,就会报异常,这是它的短板。
通过GetSection方法获取
面对对象或复杂配置,GetSection就派上用场了。它返回一个配置节,然后通过.Value拿到原始字符串。
app.MapGet("config", (IConfiguration configuration) =>{
return configuration.GetSection("msg").Value;
});
读取对象时,可以配合Get
app.MapGet("config", (IConfiguration configuration) =>{
return configuration.GetSection("Person").Get();
});
使用委托来配置选项
如果说前面几种方式是在代码里直接拿配置,那Options模式则是更正规的“依赖注入”方法。先定义一个实体类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
然后在appsettings.json里配好对应字段:
"Person": {
"Name": "张三",
"Age": 18
}
接下来在Service中注册配置,把配置节绑定到类型上:
builder.Services.Configure(builder.Configuration.GetSection("Person"));
最后在需要使用的地方,注入IOptions
app.MapGet("config", (IOptions options) =>{
return $"{options.Value.Name},{options.Value.Age}";
});
这种方式的好处是类型安全,而且配置变更时,IOptionsSnapshot和IOptionsMonitor还能支持热更新,比直接拿IConfiguration更灵活。当然,如果只是临时用一下,GetSection也完全够用。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













