在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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; }
|
请发表评论