ASP.NET Core 1.0 Configuration 配置管理
2016-02-01 14:03
1301 查看
documentation: https://docs.asp.net/en/latest/fundamentals/configuration.html
github: https://github.com/aspnet/Configuration/
github: https://github.com/aspnet/Configuration/
项目结构
配置的接口定义与基础实现 Microsoft.Extensions.Configuration 配置文件的基础实现
Microsoft.Extensions.Configuration.Abstractions 配置文件的基础实现的接口定义
Microsoft.Extensions.Configuration.Binder 特殊配置文件实现
配置的扩展 Microsoft.Extensions.Configuration.CommandLine 命令行扩展
Microsoft.Extensions.Configuration.EnvironmentVariables 环境变量扩展
Microsoft.Extensions.Configuration.FileExtensions 文本类型扩展
Microsoft.Extensions.Configuration.FileProviderExtensions 用来检测配置文本是否变动
Microsoft.Extensions.Configuration.Ini Ini文件类型扩展
Microsoft.Extensions.Configuration.Json Json文件类型扩展
Microsoft.Extensions.Configuration.Xml Xml文件类型扩展
ASP.NET Core 1.0 中抛弃了原先的web.config文件机制,引用了现有的appsettings.json文件机制,配置的文件的类型可以是JSON,XML,INI等,如在Startup类中:
/// <summary> /// 配置信息 /// </summary> public IConfigurationRoot Configuration { get; set; } /// <summary> /// 程序入口点 /// </summary> /// <param name="env"></param> public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build(); }
新的配置机制基于Microsoft.Extensions.Configuration命名空间,IConfiguration接口中定义配置信息的实例接口
/// <summary> /// Represents a set of key/value application configuration properties. /// </summary> public interface IConfiguration { /// <summary> /// Gets or sets a configuration value. /// </summary> /// <param name="key">The configuration key.</param> /// <returns>The configuration value.</returns> string this[string key] { get; set; } /// <summary> /// Gets a configuration sub-section with the specified key. /// </summary> /// <param name="key">The key of the configuration section.</param> /// <returns>The <see cref="IConfigurationSection"/>.</returns> /// <remarks> /// This method will never return <c>null</c>. If no matching sub-section is found with the specified key, /// an empty <see cref="IConfigurationSection"/> will be returned. /// </remarks> IConfigurationSection GetSection(string key); /// <summary> /// Gets the immediate descendant configuration sub-sections. /// </summary> /// <returns>The configuration sub-sections.</returns> IEnumerable<IConfigurationSection> GetChildren(); IChangeToken GetReloadToken(); }
IConfigurationRoot接口继承IConfiguration接口,定义了Reload方法; IConfigurationProvider 是定义所有实现的基础接口约定;IConfigurationBuilder接口是基础实现的构造器,ConfigurationBuilder类定义了基础具体实现。
扩展方法
支持多文件类型配置,是在IConfigurationBuilder构造器接口上进行扩展方法var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddIniFile(_iniConfigFilePath); configurationBuilder.AddJsonFile(_jsonConfigFilePath); configurationBuilder.AddXmlFile(_xmlConfigFilePath); configurationBuilder.AddInMemoryCollection(_memConfigContent); var config = configurationBuilder.Build();
如AddJsonFile扩展方法
/// <summary> /// Adds the JSON configuration provider at <paramref name="path"/> to <paramref name="configurationBuilder"/>. /// </summary> /// <param name="configurationBuilder">The <see cref="IConfigurationBuilder"/> to add to.</param> /// <param name="path">Absolute path or path relative to <see cref="IConfigurationBuilder.BasePath"/> of /// <paramref name="configurationBuilder"/>.</param> /// <param name="optional">Determines if loading the configuration provider is optional.</param> /// <returns>The <see cref="IConfigurationBuilder"/>.</returns> /// <exception cref="ArgumentException">If <paramref name="path"/> is null or empty.</exception> /// <exception cref="FileNotFoundException">If <paramref name="optional"/> is <c>false</c> and the file cannot /// be resolved.</exception> public static IConfigurationBuilder AddJsonFile( this IConfigurationBuilder configurationBuilder, string path, bool optional) { if (configurationBuilder == null) { throw new ArgumentNullException(nameof(configurationBuilder)); } if (string.IsNullOrEmpty(path)) { throw new ArgumentException(Resources.Error_InvalidFilePath, nameof(path)); } var fullPath = Path.Combine(configurationBuilder.GetBasePath(), path); if (!optional && !File.Exists(fullPath)) { throw new FileNotFoundException(Resources.FormatError_FileNotFound(fullPath), fullPath); } configurationBuilder.Add(new JsonConfigurationProvider(fullPath, optional: optional)); return configurationBuilder; }
Application Secrets
https://github.com/aspnet/UserSecrets
Configuration
https://docs.asp.net/en/latest/fundamentals/configuration.html
相关文章推荐
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(7)
- Asp.Net 网站一键部署技术(上)
- 开发ASP.NET MVC设置统一的命名空间
- ASP.NET 4.5.256 has not been registered on the Web server
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- 【B/S】Asp.Net控件总结
- 【B/S】Asp.Net宏观认识
- Asp.net MVC3使用Reporting Services生成PDF解决Web在线打印
- ASP.NET中JSON的序列化和反序列化
- metasploit——How To Set Up A Penetration Testing Lab
- 怎样安装和配置Windows 7系统的IIS 7和ASP
- ASP.NET Core 1.0 基础与应用启动
- ASP.net 5主要改进
- ASP.NET教程
- Asp.net中GridView使用详解(引)
- ASP.NET Core 1.0基础之诊断
- Metasploit渗透
- 创建Metasploit Payloads
- 简单 metasploit 漏洞入侵步骤
- Spring.net整合Asp.net mvc