zoukankan      html  css  js  c++  java
  • asp.net core 类库获取appsettings.json的值

    项目中添加appsettings.json,属性改成总是复制
    {
      "name": "asp.net",
      "private": true,
      "dependencies": {
      },
      "AllowedHosts": "*",
      "AppSettings": {
        "BlacklistDB": "Server=your database server;Database=your database name;Integrated Security=SSPI;"
      }
    }
    NuGet 添加Packages
    Microsoft.Extensions.Configuration
    Microsoft.Extensions.Configuration.Json
    Microsoft.Extensions.DependencyInjection
    Microsoft.Extensions.Hosting
    Microsoft.Extensions.Options
    Microsoft.Extensions.Options.ConfigurationExtensions
    定义AppSettings.cs类
    
        public class AppSettings
        {
            public string BlacklistDB { get; set; }
        }
    定义ConfigurationHelper.cs类
    
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.Json;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Options;
    using System.IO;
    
        public class ConfigurationHelper
        {
            public IConfiguration _config { get; set; }
    
            public ConfigurationHelper()
            {
                _config = new ConfigurationBuilder()
                .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })//ReloadOnChange = true 当appsettings.json被修改时重新加载
                .Build();
            }
    
            public T GetAppSettings<T>(string key) where T : class, new()
            {
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(_config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return appconfig;
            }
    
            public T Get<T>(string key)
            {
                IConfiguration config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", true, true).Build();
    
                return config.GetSection(key).Get<T>();
            }
    
            //public T GetAppsettings<T>(string key) where T : class, new()
            //{
            //    string keyDir = System.IO.Directory.GetCurrentDirectory();
    
            //    IConfiguration config = new ConfigurationBuilder()
            //        .SetBasePath(keyDir)
            //        .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })//ReloadOnChange = true 当appsettings.json被修改时重新加载
            //        .Build();
            //    var appconfig = new ServiceCollection()
            //        .AddOptions()
            //        .Configure<T>(config.GetSection(key))
            //        .BuildServiceProvider()
            //        .GetService<IOptions<T>>()
            //        .Value;
            //    return appconfig;
            //}
    
            /// <summary>
            /// 通过强类型绑定读取配置
            /// </summary>
            /// <typeparam name="Entity">要绑定的类型</typeparam>
            /// <param name="keyPath">配置文件路径</param>
            /// <returns>绑定的类</returns>
            public Entity GetSectionObject<Entity>(string keyPath = null) where Entity : new()
            {
                var entity = new Entity();
                if (string.IsNullOrEmpty(keyPath))
                {
                    //将appsettings.json全部配置绑定到模型
                    _config.Bind(entity);
                }
                else
                {
                    //将指定路径下的配置项绑定到模型
                    var section = _config.GetSection(keyPath);
                    section.Bind(entity);
                }
                return entity;
            }
        }
    添加项目类引用
    调用
                var_connection = new ConfigurationHelper().GetAppSettings<AppSettings>("AppSettings").BlacklistDB;
                var temp = new ConfigurationHelper().Get<string>("AppSettings:BlacklistDB");
  • 相关阅读:
    大规模特征构建实践总结
    大数据分析在新型智慧能源建设中的应用
    非局部神经网络,打造未来神经网络基本组件
    异常处理机制
    myecplise debug时怎么看源码 和怎么导入项目中框架的源码
    mybatis 学习的总结
    oracle学习总结2(pl/sql 游标 异常的处理 存储过程和函数 包 触发器)
    Oracle学习的总结
    Oracle 11 g 2R安装以及sql Development
    SpringMVC源代码学习(六)HanderMapping详解
  • 原文地址:https://www.cnblogs.com/hofmann/p/14137596.html
Copyright © 2011-2022 走看看