首页 > 解决方案 > 直到我在 Asp.Net Core 3 中显式调用具有属性的 validate 方法后,IOptions 验证才会触发

问题描述

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

应用设置.json

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

},

仪表板设置.cs

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

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

启动.cs

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

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

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

aspnet 核心中的选项验证

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

标签: c#asp.net-corestartupappsettings

解决方案


推荐阅读