NETCORE - 读取 appsettings.json 配置数据

NETCORE - 读取 appsettings.json 配置数据

 环境 : net6  webapi 

1. 配置appsettings.json数据

复制代码
{
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "authConfig": {
        "Authority": "http://localhost:8092",
        "isHttps": false,
    },
 "TempFiles": "TempFiles/",
    "AllowedHosts": "*"
}
复制代码

 

 

 

2. 创建配置类 SettingJson.cs

复制代码
    public class SettingJson
    {
        public string TempFiles { get; set; }
        public ConnectionStrings connectionStrings { get; set; }
        public AuthConfig authConfig { get; set; }
    }

    public class ConnectionStrings
    {
        public string RailCDE { get; set; }
        public string RailAssist { get; set; }
        public string RailPlat { get; set; }
    }

    public class AuthConfig
    {
        public string Authority { get; set; }
        public bool isHttps { get; set; }
    }
复制代码

 

 

 

3. 注入 Program.cs

//注入配置服务到容器,以便读取appsetting.json
builder.Services.AddOptions().Configure<SettingJson>(option => builder.Configuration.Bind(option));

 

 

4. 接口调用

在构造函数中可获取到值。

   public class MXsdService : IMXsdRepository
    {private readonly IOptionsSnapshot<SettingJson> setting;

        public MXsdService(IOptionsSnapshot<SettingJson> _setting)
        {this.setting = _setting;
        }
    }

 

 

 

 

优化:

创建类 SettingJsonConfig.cs

复制代码
    public class SettingJsonConfig
    {
        public readonly SettingJson setting;

        public SettingJsonConfig(IOptionsSnapshot<SettingJson> _setting)
        {
            setting = _setting.Value;
        }
    }
复制代码

 

 

在pragram.cs中注入

builder.Services.AddSingleton<SettingJsonConfig, SettingJsonConfig>();

 

4. 接口调用

在构造函数中可获取到值。

    public class MXsdService : IMXsdRepository
    {
       private readonly SettingJson settingJson;

        public MXsdService(SettingJsonConfig _settingJsonConfig)
        { this.settingJson = _settingJsonConfig.setting;
        }
    }

 

 

 

直接取值方式:

1. 在Program.cs中

var configuration = builder.Configuration;
var authority = configuration.GetSection("AuthConfig:Authority").Value;
string DbConnectionString_RailMate = configuration.GetSection("ConnectionStrings:RailMate").Value;

 

 

2. 在接口中

复制代码
public class MXsdController : ControllerBase
    {
        private readonly IConfiguration configuration;  public MXsdController(IConfiguration _configuration)
        {
            this.configuration = _configuration;
       var authority = configuration.GetSection("AuthConfig:Authority").Value;
       string DbConnectionString_RailMate = configuration.GetSection("ConnectionStrings:RailMate").Value;
 } }
复制代码

 

 

 

 

 

 

end

 

posted @   无心々菜  阅读(410)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示