首页 > 解决方案 > JSON 序列化性能问题 Web API

问题描述

我们有一个 asp.net Web API 应用程序,当调用 POST API 时,需要 30 秒才能到达 API 中的第一条语句。我了解主要从请求正文中反序列化对象所花费的时间。我们使用 Newtonsoft json 和默认的合约解析器。

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

Json 对象有 25 个部门 -> 每个部门有一个 5 年对象的数组 > 每年有一个月份数组(12 个对象) -> 每个月是一个有 15 个属性的对象

有趣的部分是性能延迟仅发生在特定环境中。虽然在我的本地环境中没有问题,但具有相同数据的副本。我可以尝试为 newtonsoft ( https://www.newtonsoft.com/json/help/html/Performance.htm ) 建议的性能改进,但在此之前,我预计同样的问题也会在我的本地发生。

感谢任何帮助!


更新

DefaultContractResolver.DynamicCodeGeneration 在我的本地和其他环境中都设置为 True。

的结果

public class Model { public string Foo { get; set; }

((JsonObjectContract)contractResolver.ResolveContract(typeof(Model))).Properties[0].ValueProvider.GetType()

在我的本地和其他环境中都是 DynamicValueProvider。

标签: jsonperformanceasp.net-web-apijson.net

解决方案


推荐阅读