直到我在Asp.Net Core 3中显式调用具有属性的validate方法后,IOptions Validation才会触发

最近,我使用IOptions接口读取Asp.net核心项目中的配置,我发现我的代码不会显示异常页面,直到我用所需的属性显式调用“ validate”方法为止,如下面的代码所示。

appsettings.json

"DashboardSettings": {
"Header": {
  "Title": "Seguro De Coche"//,
  //"SearchBoxEnabled": true
}

},

DashboardSetting.cs

public class DashboardSettings
{
    public HeaderSettings Header { get; set; }
}
public class HeaderSettings
{
    public string Title { get; set; }

    [Required]
    public bool SearchEnabled { get; set; }
}

启动文件

services.AddOptions<DashboardSettings>().
            Bind(configuration.GetSection("DashboardSettings")).
            ValidateDataAnnotations();

在上述情况下,“ SearchEnabled”属性所需的验证不会触发。当我显式调用带有属性的validate方法时,它将触发。 (请参见下面的代码以及验证方法)

services.AddOptions<DashboardSettings>().
         Bind(configuration.GetSection("DashboardSettings")).
            ValidateDataAnnotations().
            Validate(v =>
            {
                return v.Header.SearchEnabled;
            });

options-validation-in-aspnet-core

所以我的问题是,如果我的强类型将具有多个配置属性,那么我将使用类的所有属性来验证它们吗?如果是这样,对我来说这不是一个好主意。有什么建议吗?

评论