商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > ASP.NET读取配置文件的多种方式详解

ASP.NET读取配置文件的多种方式详解

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

每个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也完全够用。

本文转载于:https://www.jb51.net/aspnet/335810844.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注