这有些曲折。我已修改此答案以使其与 ASP.NET Core 2.0 保持最新(截至2018年2月26日)。
这主要来自官方文档:
若要使用ASP.NET应用程序中的设置,建议仅
Configuration在应用程序的
Startup类中实例化一个。然后,使用“选项”模式访问各个设置。假设我们有一个
appsettings.json看起来像这样的文件:
{ "MyConfig": { "ApplicationName": "MyApp", "Version": "1.0.0" }}我们有一个POCO对象代表配置:
public class MyConfig{ public string ApplicationName { get; set; } public int Version { get; set; }}现在,我们在中构建配置
Startup.cs:
public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetbasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); }}请注意, 默认情况下将 在.NET Core 2.0中
appsettings.json进行 注册
。
appsettings.{Environment}.json如果需要,我们还可以为每个环境注册一个配置文件。如果要将配置注入控制器,则需要在运行时注册它。我们通过
Startup.ConfigureServices:
public void ConfigureServices(IServiceCollection services){ services.AddMvc(); // Add functionality to inject IOptions<T> services.AddOptions(); // Add our Config object so it can be injected services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));}我们像这样注入它:
public class HomeController : Controller{ private readonly IOptions<MyConfig> config; public HomeController(IOptions<MyConfig> config) { this.config = config; } // GET: /<controller>/ public IActionResult Index() => View(config.Value);}全
Startup类:
public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetbasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // Add functionality to inject IOptions<T> services.AddOptions(); // Add our Config object so it can be injected services.Configure<MyConfig>(Configuration.GetSection("MyConfig")); }}


