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

.NET Framework 4.7.1 Web API不同客户端返回JSON Schema不一致问题

问题根因分析

你已经通过抓包定位到请求核心差异为携带的Cookie不同,结合oldData修改后所有客户端都能拿到更新值的现象,说明请求均已抵达新版本服务节点,只是序列化时被过滤了newProperty字段,核心触发原因是服务端/网关层遗留了基于Cookie的版本适配规则,常见场景如下:

  • 服务端历史迭代中做过基于Cookie的灰度发布逻辑,会根据Cookie内的特定字段(版本标识、用户分组标识等)判断返回对应版本的响应结构,新版代码上线后未清理旧的灰度规则,携带旧标识Cookie的请求会被过滤新增字段
  • .NET控制台使用的HttpWebRequest默认关联CookieContainer时会持久化同源请求的Cookie,一直携带历史遗留的旧版本标识Cookie,因此持续拿到旧结构;Postman、Chrome未携带该标识Cookie,因此拿到新结构
  • 反向代理、负载均衡层存在基于Cookie的分流规则,携带特定Cookie的请求被转发到了未清理的旧逻辑处理链路
分步排查修复方案
  1. 先验证客户端Cookie问题
    给控制台请求的HttpWebRequest强制初始化全新的CookieContainer,或者手动清空请求头内的所有Cookie字段后重新发起请求,确认是否返回包含newProperty的新结构。
  2. 定位触发规则的Cookie字段
    从Fiddler抓取的控制台请求Cookie中,逐一复制字段到Postman的请求头内重放,当某一个Cookie复制后Postman也返回旧结构时,即可锁定触发旧逻辑的目标Cookie字段。
  3. 清理服务端/网关的遗留规则
    • 排查服务端自定义的ActionFilter、消息委托、JSON序列化处理器、内容协商逻辑,删除基于Cookie判断过滤字段的旧灰度规则
    • 检查IIS/Nginx等反向代理、负载均衡的路由配置,清理基于Cookie的分流规则,确保所有请求都走新版处理逻辑
  4. 兜底兼容处理
    若暂时无法定位遗留规则位置,可在服务端JSON序列化逻辑中强制添加newProperty字段输出,或者在控制台客户端请求逻辑中强制删除触发旧规则的Cookie字段,临时解决问题。

补充说明:oldData值可正常同步更新的现象,已经排除了服务端节点缓存、客户端整体响应缓存的可能性,仅需要聚焦基于Cookie的字段过滤逻辑排查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:57:02