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

如何配置NewtonsoftJson在序列化失败时终止请求并返回错误?

解决ASP.NET Core中Newtonsoft.Json序列化失败时参数为null的问题

要实现序列化失败时直接返回错误、不执行Action方法,只需修改Newtonsoft.Json的配置,让序列化错误触发异常,由ASP.NET Core框架自动处理并返回错误响应。

具体配置步骤

在.NET 6+的Program.cs(或旧版本的Startup.cs)中,配置AddNewtonsoftJson时,为SerializerSettings.Error事件添加处理逻辑,直接抛出序列化错误:

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

builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.Error = (sender, errorArgs) =>
        {
            // 抛出序列化过程中发生的异常,终止后续动作执行
            throw errorArgs.ErrorContext.Error;
        };
    });

var app = builder.Build();

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

app.Run();

效果说明

  • 当客户端传入的JSON无法正常序列化为MyComplexObject时,Error事件会触发并抛出异常,ASP.NET Core的模型绑定流程会立即终止,不会执行MyAction方法。
  • 框架会自动返回400 Bad Request响应;若控制器标记了[ApiController]特性,默认会返回标准化的模型验证错误响应。
  • 若MyAction的myObj参数为null,则可以确定是客户端主动传入了null,而非序列化错误导致。

额外说明

如果需要自定义错误响应格式,可以结合ProblemDetails或自定义异常过滤器,捕获序列化异常并返回自定义结构的错误信息,但上述基础配置已经能满足核心需求:区分客户端传入的null和序列化错误,且序列化错误时不执行Action。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:47:03