如何检查在.NET Core的appsettings.json
中是否存在配置部分?
即使该部分不存在,以下代码仍将返回一个已实例化的实例。
例如:
var section = this.Configuration.GetSection<TestSection>("testsection");
如何检查在.NET Core的appsettings.json
中是否存在配置部分?
即使该部分不存在,以下代码仍将返回一个已实例化的实例。
例如:
var section = this.Configuration.GetSection<TestSection>("testsection");
自 .NET Core 2.0 开始,您还可以调用 ConfigurationExtensions.Exists 扩展方法来检查是否存在某个部分。
var section = this.Configuration.GetSection("testsection");
var sectionExists = section.Exists();
由于GetSection(sectionKey)
永远不会返回null, 所以你可以安全地在其返回值上调用Exists
。
阅读关于ASP.NET Core中的配置的文档也很有帮助。
var sectionExists = Configuration.GetChildren().Any(item => item.Key == "testsection"));
如果"testsection"存在,应该返回true,否则返回false。
Microsoft.Extensions.Configuration
中内置了对多个配置提供程序的支持。请参阅ASP.NET Core中的配置。 - Pradeep KumarInvalidOperationException
。AddOptions<TOptions>()
的IOptions
模式,则还在.Net 6中添加了ValidateOnStart()扩展方法,以便能够指定在启动时运行验证,而不仅在解析IOptions
实例时运行。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();
DataAnnotations
。builder.Services.AddOptions<AppSettings>()
.BindConfiguration(nameof(AppSettings))
.ValidateDataAnnotations()//
.ValidateOnStart();
using System.ComponentModel.DataAnnotations;
public class AppSettings()
{
[Required]
public required string MyProperty { get; set; }
}
AppSettings
和MyProperty
的情况下才能正常工作。"AppSettings":{
"MyProperty ":"non-empty string"
}