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

如何覆盖ASP.NET Core序列化错误提示信息?

自定义ASP.NET Core模型验证错误信息,替换JSON转换底层提示

要替换默认暴露底层实现的错误提示,返回通用的“字段XX无效”信息,可以通过自定义模型验证错误响应工厂来实现,具体步骤如下:

1. 全局配置错误响应逻辑

在Program.cs(.NET 6+)或Startup.cs(.NET 5及更早)中,配置ApiBehaviorOptions来拦截并修改模型验证错误:

// Program.cs 示例
var builder = WebApplication.CreateBuilder(args);

// 添加控制器服务
builder.Services.AddControllers();

// 配置自定义模型验证错误响应
builder.Services.Configure<ApiBehaviorOptions>(options =>
{
    options.InvalidModelStateResponseFactory = context =>
    {
        // 遍历所有模型错误,替换JSON转换类错误信息
        var customErrors = context.ModelState
            .Where(entry => entry.Value.Errors.Any())
            .ToDictionary(
                entry => entry.Key,
                entry => entry.Value.Errors.Select(error =>
                {
                    // 判断是否为JSON转换异常(类型不匹配导致)
                    if (error.Exception is JsonException)
                    {
                        return $"字段{entry.Key}无效";
                    }
                    // 其他类型的错误(比如必填项为空)保留原提示
                    return error.ErrorMessage;
                }).ToArray()
            );

        return new BadRequestObjectResult(new { Errors = customErrors });
    };
});

var app = builder.Build();

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run();

2. 效果验证

当你传入int类型给String字段时,接口会返回如下格式的响应:

{
  "Errors": {
    "String": [
      "字段String无效"
    ]
  }
}

补充说明

  • 这个逻辑全局生效,所有控制器的模型绑定错误都会被统一处理;
  • 如果需要针对特定字段做更精细的自定义提示,可以在判断时结合字段名做特殊处理;
  • 对于非JSON转换类的错误(比如[Required]校验失败),会保留原有的错误提示,也可根据需求统一修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:01:57