// 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();
4条答案
按热度按时间mrfwxfqh1#
从.NET Core 2.0开始,您还可以调用扩展名扩展名扩展方法来检查节是否存在。
字符串
由于
GetSection(sectionKey)
never returns null,您可以安全地调用Exists
的返回值。在Configuration in ASP.NET Core上阅读此文档也很有帮助。
8e2ybdfx2#
查询Configuration的子项,并检查是否有名称为“testsection”的子项
字符串
如果“testsection”存在,则返回true,否则返回false。
qlfbtfca3#
在**.Net 6**中,有一个新的扩展方法:
ConfigurationExtensions.GetRequiredSection()
如果没有给定键的节,则抛出
InvalidOperationException
。此外,如果您将
IOptions
模式与AddOptions<TOptions>()
一起使用,则.Net 6中还添加了ValidateOnStart()扩展方法,以便能够指定验证应在启动时运行,而不是仅在IOptions
示例解析时运行。您可以通过合并与
GetRequiredSection()
结合使用,以确保某个部分确实存在:字符串
yc0p9oo04#
也可以使用
DataAnnotations
字符串
这将确保数据注解工作:
型
仅当
AppSettings
和MyProperty
被设置时才有效:型