码迷,mamicode.com
首页 > Web开发 > 详细

Asp.Net Core 在不能使用注入方式的情况下读取配置文件

时间:2018-04-16 22:48:17      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:环境变量   缺陷   需求   注入   开发   方案   文件中   core   load   

最近在用Asp.Net Core 做项目,遇到一个在不能使用注入的类中读取配置文件的问题。

大家都知道在core中推荐使用注入的方式读取配置文件,这样读取到的值是强类型的,弥补了web.config的缺陷。

当我用着正爽的时候遇到了一个静态类也需要读取配置文件的问题,纠结了几天才又了这篇博文。

最初的版本是下面这个样子

public static class ConfigurationManager
{
    static IConfiguration Configuration;
    static ConfigurationManager()
    {
        var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public static string GetValue(string key)
    {
        return Configuration[key];
    }

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

上面的代码只能读取配置appsettings.json中的配置,由于我们的开发环境有好多套,这个并没有满足我们的需求

但是这个工具类是静态的不能将环境变量注入进来,这是困扰我的一个问题,最后终于在师傅的帮助下有了解决方案,也就是下面这个版本

 

public static class ConfigurationManagerV2
{
    static IConfiguration Configuration;
    static ConfigurationManagerV2()
    {
// 这里读取环境变量
var provider = new EnvironmentVariablesConfigurationProvider(); provider.Load(); provider.TryGet("ASPNETCORE_ENVIRONMENT", out string environmentName); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); Configuration = builder.Build(); } /// <summary> /// /// </summary> /// <param name="key">不区分大小写</param> /// <returns></returns> public static string GetValue(string key) { return Configuration[key]; } public static T GetValue<T>(string key) { return Configuration.GetValue<T>(key); } }

 

这样我们就可以在静态文件中使用配置文件,并且可以根据环境变量来读取不同的配置文件。

大功告成!

 

Asp.Net Core 在不能使用注入方式的情况下读取配置文件

标签:环境变量   缺陷   需求   注入   开发   方案   文件中   core   load   

原文地址:https://www.cnblogs.com/taohonggou/p/8858956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!