webapi读取配置文件内容

1.读取默认的配置文件appsettings.json

appsettings.json内容
{ "Logging": {"Default": "Information", "Microsoft": "Warning", }, "AllowedHosts": "*", "ConnectionString": "Server=.;Database=Carina;User ID=sa;Password=pass****;" }

 

public class WeatherForecastController : ControllerBase
  {
    private IConfiguration _configuration;

    private readonly ILogger<WeatherForecastController> _logger;
  //依赖注入configuration,就可以在controller中使用configuration了
    public WeatherForecastController(ILogger<WeatherForecastController> logger, IConfiguration configuration)
    {
      _logger = logger;
      _configuration = configuration;  //
    }
  //读取单个值
  var connectionStr =_configuration["ConnectionString"] ;
  //var connectionStr =_configuration.GetValue<string>("ConnectionString")
  //获取对象中的值
  var connectionStr =_configuration["Logging:Default"] //返回”Information“
}

若要读出一个对象,需要先声明一个类,然后读取出来。若要依赖注入该配置文件对象,需要再startup类中声明

public class Logging{
      public string Default{get;set;},
      public string Microsoft{get;set}
}

//controller类中
var config = _configuration.GetSection("logging1").Get<Logging>();

//若要依赖注入配置文件的对象。 //startup类 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.Configure<Logging>(Configuration.GetSection("Logging")); } //controller类中 private IConfiguration _configuration; private Logging logging; private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger, IConfiguration configuration, IOptions<Logging> options) { _logger = logger; _configuration = configuration; logging = options.Value; //logging对象即包含配置文件的信息 }

  单独类读取配置文件信息

  public static class ConfigurationManager
    {
        public readonly static IConfiguration Configuration;

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

        public static T GetSection<T>(string key) where T : class, new()
        {
            return new ServiceCollection()
                .AddOptions()
                .Configure<T>(Configuration.GetSection(key))
                .BuildServiceProvider()
                .GetService<IOptions<T>>()
                .Value;
        }

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

 

上一篇:hdfs,Java编程以及SequenceFile,java编程


下一篇:自定义持久层