当我从 docker 容器运行 ASP.Net 核心 Web API 时,它会引发验证错误:
System.InvalidOperationException:验证类型“ClassName”时,ValidationVisitor 超出了配置的最大验证深度“32”。这可能表示非常深或无限递归的对象图。考虑修改“MvcOptions.MaxValidationDepth”或取消对模型类型的验证。
我唯一能找到有关此问题的讨论的地方是在
这里,似乎在最新版本的 ASP.net 核心上提供了修复程序。我将我的 .net 核心版本更新到最新版本,但仍然面临同样的问题。
这是验证导致问题的类的代码:
[Required]
[Range(1, long.MaxValue)]
public long Id { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(1000)]
public string Name { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(200)]
public string Category { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(13)]
public string Division { get; set; }
Run Code Online (Sandbox Code Playgroud)
重要提示:我是唯一面临此问题的人,因为我团队的其他成员正在成功运行该项目,非常感谢任何帮助。
小智 7
这是影响MVC和Web Api的Asp.Net Core ModelBinding Validation中的一个错误 https://github.com/dotnet/aspnetcore/issues/13778
一种解决方法是在 Startup.ConfigureServices 中增加 MaxModelValidationErrors:
services.AddMvc()
.AddMvcOptions(options => {
options.MaxModelValidationErrors = 999999;
})
Run Code Online (Sandbox Code Playgroud)
小智 7
增加 MaxModelValidationErrors 并没有解决我的问题,我必须更改不同的值(MaxValidationDepth)才能使事情正常工作。想在这里添加它,以防有人遇到和我一样的问题。
.AddMvcOptions(options =>
{
options.MaxValidationDepth = 999;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |