You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 7 Web API中禁用自动模型验证?

问题:禁用ASP.NET Core 7 Web API的默认模型验证拦截

我有一个ASP.NET Core 7 Web API项目,其中包含一个动作方法,该方法从请求体接收如下ActionModel模型:

public class ActionModel
{
    [Required]
    [MaxLength(3)]
    [RegularExpression("[a-zA-Z]+[a-zA-Z]*")]
    public string Name { get; set; }
    public Guid ProfileId { get; set; }
}

我的动作方法如下所示:

[HttpPost("extra-data")]
public async Task<ActionResult> MyAction([FromBody] ActionModel requestDto)
{
    if (ModelState.IsValid)
    {
        _logger.LogError("Try to do some thing");
    }

    _logger.LogError($"{ModelState.ErrorCount}");
    return Ok();
}

我希望请求能进入动作方法体内执行,但目前请求在到达动作方法前就被其他中间件验证拦截了。请问如何禁用这个默认的自动验证中间件?


解决方案

ASP.NET Core 7中默认通过ApiBehaviorOptions启用了自动模型验证机制,该机制会在请求进入动作方法前自动检查模型状态,若验证失败直接返回400 Bad Request响应。要禁用这一默认拦截行为,只需在项目的Program.cs中配置ApiBehaviorOptions:

builder.Services.Configure<ApiBehaviorOptions>(options =>
{
    // 禁用自动模型验证拦截
    options.SuppressModelStateInvalidFilter = true;
});

配置完成后,无论模型验证是否通过,请求都会进入动作方法体内。你可以像代码中那样,通过ModelState.IsValid自行判断验证结果,并根据业务需求处理错误或执行后续逻辑。

内容的提问来源于stack exchange,提问作者Navid_pdp11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:15:11