在 ASP.NET Core API 中,ValidationVisitor 负责验证模型的有效性。当验证深度超过最大配置值时,会出现“ValidationVisitor exceeded the maximum configured validation depth '32'.”的错误消息。
要解决此问题,可以通过更改验证深度的最大配置值来增加验证的深度。根据你的需求,你可以选择增加或减少验证深度。
下面是一个示例,演示如何更改验证深度的最大配置值:
打开 Startup.cs 文件。
在 ConfigureServices 方法中,找到对 AddControllers() 方法的调用。
在 AddControllers() 方法之后,添加以下代码:
services.Configure(options =>
{
options.InvalidModelStateResponseFactory = context =>
{
var validationErrors = context.ModelState.Values.SelectMany(x => x.Errors)
.Select(x => x.ErrorMessage)
.ToList();
return new BadRequestObjectResult(validationErrors);
};
});
services.Configure(options =>
{
options.MaxValidationDepth = 64; // 设置最大验证深度为 64
});
在上述代码中,我们首先使用 Configure 方法配置 ApiBehaviorOptions,以自定义无效模型状态的响应。在这个示例中,我们只是将验证错误转换为 BadRequestObjectResult。
接下来,我们使用 Configure 方法配置 MvcOptions,以更改验证深度的最大配置值。在此示例中,我们将最大验证深度设置为 64。
通过以上步骤,我们可以增加验证的深度,从而解决“ValidationVisitor exceeded the maximum configured validation depth '32'.”的错误消息。请根据你的需求自定义最大验证深度的值。