.net Core 中的配置现在大部分构建在 POCO 或 IOptions 之上。您不会获得单独的密钥,而是建立设置类。以前,您必须构建一个 CustomConfiguration 类,或者您将 AppSettings 前缀为“将它们分组”。不再!如果您采用使用 IOptions 的方法,它的工作原理类似于以下内容。
您的 appSettings.json 如下所示:
{
"myConfiguration": {
"myProperty": true
}
}
然后,您可以创建一个与您的配置相匹配的 POCO。像这样的东西:
public class MyConfiguration
{
public bool MyProperty { get; set; }
}
然后在您的 startup.cs 中,您需要将配置加载到选项对象中。它最终看起来与以下内容非常相似。
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration"));
}
}
然后 DI 全部设置为注入 IOptions 对象。然后你可以像这样将它注入到控制器中:
public class ValuesController : Controller
{
private readonly MyConfiguration _myConfiguration;
public ValuesController(IOptions<MyConfiguration> myConfiguration)
{
_myConfiguration = myConfiguration.Value;
}
}
还有其他方法可以做到这一点,不使用 IOptions 对象,您只需将 POCO 注入您的控制器。有些人(包括我)更喜欢这种方法。你可以在这里阅读更多:http://dotnetcoretutorials.com/2016/12/26/custom-configuration-sections-asp-net-core/
当然,官方文档的文档链接在这里:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration