这边博客记录迁移到ASP.NET Core过程中读取配置文件的变化。在老版本的ASP.NET里,项目的全局配置一般都存在web.config里的appSettings里,只需要用ConfigurationManager.AppSettings[“Foo”]就可以把名为Foo的变量取出来。在ASP.NET Core里,访问配置文件的方式也有了很大变化。但是ASP.NET Core里web.config已经被appsettings.json替换,加上ASP.NET Core里大量用了依赖注入(Dependency Injection),这使得读取配置信息也和之前不一样,新的框架下取配置更加灵活和易于扩展。这里用一个小例子演示如何通过Options.ConfigurationExtensions这个来取得配置。
然后在project.json里下面这行代码
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
然后在appSettings里添加一个AppSettings的字段,包含Foo和Bar两个配置及其值。
创建一个AppSettings.cs,
现在就可以在Startup.cs里配置,首先用AddOptions()
初始化注入IOptions<T>,然后Configure<AppSettings>则是自动初始化AppSettings实例并且映射appSettings里的配置
// Add functionality to inject IOptions<T> services.AddOptions(); services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
然后修改一下HomeController,用about二面来做一下测试
现在打开About页面,就会发现Foo和Bar这2个配置都正确读出来了