gpt4 book ai didi

c# - IOptions 验证不会触发,直到我在 Asp.Net Core 3 中显式调用具有属性的验证方法

转载 作者:行者123 更新时间:2023-12-05 07:10:43 27 4
gpt4 key购买 nike

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

应用设置.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; }
}

启动.cs

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

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

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

options-validation-in-aspnet-core

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

最佳答案

我不知道这是否是 .net core 3 中的一个选项,但在 .net core 6 中你必须调用

.ValidateOnStart()

在从 AddOptions<>() 返回的 optionsbuilder 上

否则,将在第一次检索对象时调用验证。

关于c# - IOptions 验证不会触发,直到我在 Asp.Net Core 3 中显式调用具有属性的验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61108617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com