我们使用 ASP.NET Core 2.1 和 .NET Framework 4.6.2。我们有一位客户需要将一个相当大的嵌套 json 结构发送到我们的 web 应用程序。当他们进行此调用时,我们将输出以下日志并返回错误:已超出读取器的 MaxDepth 32。路径‘ super.long.path.to property ’,第 1 行,位置 42111。”MaxDepth = 32我浏览了 ASP.NET Core 代码库,并观察到框架提供的反序列化器中的一些引用。是否可以将其配置为不同的深度?
4 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
我还没有测试过这一点,但在 Startup.cs 中你应该能够执行如下操作:
services.AddMvc().AddJsonOptions(options => {
options.SerializerSettings.MaxDepth = 64; // or however deep you need
});
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您还可以直接在反序列化中设置所需的深度,如下例所示:
JsonConvert.DeserializeObject< T >(json, new JsonSerializerSettings
{
MaxDepth = //the value you need
});
浮云间
TA贡献1829条经验 获得超4个赞
如果您使用的是 .NET Core 3.1,请在startup.cs 文件中尝试此操作。确保安装 Newtonsoft.Json 包。
services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.MaxDepth = 64;
});
喵喔喔
TA贡献1735条经验 获得超5个赞
对于 .NET Core 5.0 System.Text.Json:
services.AddMvc().AddJsonOptions(options =>
{
options.JsonSerializerOptions.MaxDepth = 64;
});
- 4 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消