如何检查.NET Core 中是否存在配置节?
How to check if Configuration Section exists in .NET Core?
如何检查 .NET Core 中的 appsettings.json
中是否存在配置部分?
即使某个部分不存在,下面的代码也总是return一个实例化的实例。
例如
var section = this.Configuration.GetSection<TestSection>("testsection");
查询Configuration的children是否有名字为"testsection"
var sectionExists = Configuration.GetChildren().Any(item => item.Key == "testsection"));
如果 "testsection" 存在,这应该 return 为真,否则为假。
自 .NET Core 2.0 起,您还可以调用 ConfigurationExtensions.Exists 扩展方法来检查某个部分是否存在。
var section = this.Configuration.GetSection("testsection");
var sectionExists = section.Exists();
自 GetSection(sectionKey)
never returns null 以来,您可以安全地调用 Exists
其 return 值。
阅读 Configuration in ASP.NET Core 上的文档也很有帮助。
在.Net 6中,有一个新的扩展方法:
ConfigurationExtensions.GetRequiredSection()
如果没有包含给定键的部分,则抛出 InvalidOperationException
。
此外,如果您将 IOptions
模式与 AddOptions<TOptions>()
一起使用,.Net 6 中还添加了 ValidateOnStart() 扩展方法,以便能够指定验证应该 运行 在启动时,而不是仅在解析 IOptions
实例时 运行ning。
你可以将它与 GetRequiredSection()
结合使用,以确保某个部分确实存在:
// Bind MyOptions, and ensure the section is actually defined.
services.AddOptions<MyOptions>()
.BindConfiguration(nameof(MyOptions))
.Validate<IConfiguration>((_, configuration)
=> configuration.GetRequiredSection(nameof(MyOptions)) is not null)
.ValidateOnStart();
如何检查 .NET Core 中的 appsettings.json
中是否存在配置部分?
即使某个部分不存在,下面的代码也总是return一个实例化的实例。
例如
var section = this.Configuration.GetSection<TestSection>("testsection");
查询Configuration的children是否有名字为"testsection"
var sectionExists = Configuration.GetChildren().Any(item => item.Key == "testsection"));
如果 "testsection" 存在,这应该 return 为真,否则为假。
自 .NET Core 2.0 起,您还可以调用 ConfigurationExtensions.Exists 扩展方法来检查某个部分是否存在。
var section = this.Configuration.GetSection("testsection");
var sectionExists = section.Exists();
自 GetSection(sectionKey)
never returns null 以来,您可以安全地调用 Exists
其 return 值。
阅读 Configuration in ASP.NET Core 上的文档也很有帮助。
在.Net 6中,有一个新的扩展方法:
ConfigurationExtensions.GetRequiredSection()
如果没有包含给定键的部分,则抛出 InvalidOperationException
。
此外,如果您将 IOptions
模式与 AddOptions<TOptions>()
一起使用,.Net 6 中还添加了 ValidateOnStart() 扩展方法,以便能够指定验证应该 运行 在启动时,而不是仅在解析 IOptions
实例时 运行ning。
你可以将它与 GetRequiredSection()
结合使用,以确保某个部分确实存在:
// Bind MyOptions, and ensure the section is actually defined.
services.AddOptions<MyOptions>()
.BindConfiguration(nameof(MyOptions))
.Validate<IConfiguration>((_, configuration)
=> configuration.GetRequiredSection(nameof(MyOptions)) is not null)
.ValidateOnStart();