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

如何在ASP.NET Core接口中屏蔽NewtonsoftJson错误响应的DTO敏感细节

解决方案

你可以通过自定义模型验证响应或者全局配置Newtonsoft.Json反序列化错误处理两种方式,屏蔽错误信息中的敏感路径内容:

方案1:全局自定义模型验证错误响应(推荐)

该方案可以统一处理所有接口的参数验证错误返回格式,直接替换掉包含敏感信息的原始错误消息:

services.AddControllers()
    .AddNewtonsoftJson(s => s.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver())
    .ConfigureApiBehaviorOptions(options =>
    {
        options.InvalidModelStateResponseFactory = context =>
        {
            var errorList = new List<string>();
            foreach (var state in context.ModelState.Values)
            {
                foreach (var error in state.Errors)
                {
                    // 检测是否为反序列化类错误,统一返回通用提示
                    if (error.ErrorMessage.Contains("deserialize", StringComparison.OrdinalIgnoreCase))
                    {
                        errorList.Add("请求JSON格式错误,请检查参数结构是否符合接口要求");
                    }
                    else
                    {
                        // 其他验证错误(比如必填、邮箱格式错误等)保留原提示
                        errorList.Add(error.ErrorMessage);
                    }
                }
            }

            return new BadRequestObjectResult(new
            {
                title = "参数验证失败",
                status = 400,
                errors = errorList
            });
        };
    });

方案2:配置Newtonsoft.Json全局反序列化错误处理

直接在JSON解析阶段捕获异常,替换错误消息,避免原始异常信息流入验证层:

services.AddControllers()
    .AddNewtonsoftJson(s => 
    {
        s.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        s.SerializerSettings.Error = (sender, args) =>
        {
            // 替换原始错误消息,屏蔽项目内部类型信息
            args.ErrorContext.ErrorMessage = "请求数据解析失败,请检查JSON格式是否正确";
            args.ErrorContext.Handled = true;
        };
    });

注意:方案2会捕获所有Newtonsoft.Json的序列化/反序列化错误,如果需要区分不同错误类型,可以在Error事件中加条件判断,只替换包含敏感信息的错误消息即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:48:03