NetCore 2.X 从 appsettings.json获取配置值 单独方法

2020-10-19  乐帮网

netcore

这里只说一下怎么从appSetting.json中取值,NetCore2.X中默认情况下会有四个相关配置文件,在取值之前请确认你需要从哪个文件取值,以及运行的环境是否配置正确。
Development(开发)Staging(预演)Production(生产),运行环境确定可参见:https://lebang2020.cn/details/201019oxa52ktu.html
一般情况我们正常可使用IConfiguration来获取配置 ConfigurationBuilder.GetValue<T>例如:

// Program.cs
public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();            
}

// Startup.cs
public class Startup
{
    public IHostingEnvironment HostingEnvironment { get; private set; }
    public IConfiguration Configuration { get; private set; }

    public Startup(IConfiguration configuration, IHostingEnvironment env)
    {
        this.HostingEnvironment = env;
        this.Configuration = configuration;
        String val = configuration.GetValue<string>("key","defaultValue")
    }
}

在Web项目中依赖自动注入的构造函数来获取IConfiguration对象。这个一点儿问题都没有,不过有时候我们需要在脱离注入的条件下获取配置文件,这个时候怎么办呢?
可以看一下NetCore的源码,我们提取出一部分来实现它。

public class MyAppsettings
    {
        static IConfiguration Configuration { get; set; }
        static string contentPath { get; set; }

        public Appsettings(string contentPath)
        {
            string _environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            string _path = $"appsettings.{_environment?? "Production"}.json";
            
            Configuration = new ConfigurationBuilder()
                .SetBasePath(contentPath)
               .Add(new JsonConfigurationSource { Path = _path, Optional = false, ReloadOnChange = true })
               .Build();
        }

        public static T  GetValue<T>(string key,T defaultVal)
        {
            return Configuration.GetValue<T>(key, defaultVal);
        }

    }

注意配置文件的放置的目录是在根目录,使用方法也简单

string val = MyAppsettings.GetValue<string>("key");

欢迎指正,有问题在公众号留言。

ASP.NET Core 中appsettings 各环境设置以及使用

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力