netcore 非注入全局獲取配置文件


在netcore開發中,最常見的就是注入,比如想獲取appsettings.json的內容,我們就需要去注入,然后在controller里面去獲取,但是我們如果想要在service中使用appsettings.json的內容,這樣就是一個問題,並且每個controller去注入也是非常麻煩的事情

 

下面的注入的(這種方法百度一下可以出來幾百條相同的搜索結果。。。參見https://www.cnblogs.com/ideacore/p/6282926.html

services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

然后獲取使用

 

 

 

我想要在service類庫里面使用,這時該如何使用哪?

直接上代碼:

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AppSettings": {
    "TestString": "This is default environment",
    "ConfigVersion": "local",
    "connectionString": "connectionString",
    "RedisExchangeHosts": "RedisExchangeHosts"
  }
}

 

    public class AppSettings
    {
        public string TestString { get; set; }
        public string ConfigVersion { get; set; }
        public string connectionString { get; set; }
        public string RedisExchangeHosts { get; set; }
        public string UploadPath { get; set; }
    }
        public Startup(IConfiguration configuration, ILoggerFactory factory, IHostingEnvironment env)
        {
            EnvironmentName = env.EnvironmentName;
            Configuration = configuration;
            // 將內置的日志組件設置為 NHibernate 的日志組件
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)//增加環境配置文件,新建項目默認有
                .AddEnvironmentVariables();

            new AppSettingProvider().Initial(configuration);

            Configuration = builder.Build();

        }
    public class AppSettingProvider
    {
        private static AppSettings _myappSettings;
        public static AppSettings _appSettings { get { return _myappSettings; } }

        public void Initial(IConfiguration configuration)
        {
            _myappSettings =  new AppSettings() {
                ConfigVersion = configuration["AppSettings:ConfigVersion"],
                connectionString = configuration["AppSettings:connectionString"],
                TestString = configuration["AppSettings:TestString"],
                RedisExchangeHosts = configuration["AppSettings:RedisExchangeHosts"],
                UploadPath = configuration["AppSettings:UploadPath"]
            };
        }

    }

這樣,我們在要使用的時候只需要AppSettingProvider._appSettings.xxxx即可,不需要進行重復的、實現

 

有錯誤或者片面地方歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM