猿问

如何增加 ASP.NET Core Web 应用程序中的 JSON 反序列化 MaxDepth 限制

我们使用 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 代码库,并观察到框架提供的反序列化器中的一些引用。

是否可以将其配置为不同的深度?


慕容森
浏览 120回答 4
4回答

陪伴而非守候

我还没有测试过这一点,但在 Startup.cs 中你应该能够执行如下操作:services.AddMvc().AddJsonOptions(options => {    options.SerializerSettings.MaxDepth = 64;  // or however deep you need});

呼啦一阵风

您还可以直接在反序列化中设置所需的深度,如下例所示:JsonConvert.DeserializeObject< T >(json, new JsonSerializerSettings{&nbsp; &nbsp; MaxDepth = //the value you need});

浮云间

如果您使用的是 .NET Core 3.1,请在startup.cs 文件中尝试此操作。确保安装 Newtonsoft.Json 包。services.AddMvc().AddNewtonsoftJson(options =>{&nbsp; &nbsp; options.SerializerSettings.MaxDepth = 64;});

喵喔喔

对于 .NET Core 5.0 System.Text.Json:services.AddMvc().AddJsonOptions(options =>&nbsp;{&nbsp; &nbsp; options.JsonSerializerOptions.MaxDepth = 64;});
随时随地看视频慕课网APP
我要回答