在最新的 .NET Core 2.1 中,引入了模型状态验证的自动验证(https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#mvc)。
以前我可以通过下面的代码覆盖验证错误响应:
public class ApiValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(new context.ModelState);
}
base.OnActionExecuting(context);
}
但现在它不再起作用了。不输入覆盖方法就响应验证错误。
有人知道吗? 谢谢。
最佳答案
如果您想继续使用 ApiController
属性(它具有其他功能,例如禁用常规路由和允许模型绑定(bind)而不添加 [FromBody]
参数属性),你可以通过你的 Startup.cs
文件来做到这一点:
services.Configure<ApiBehaviorOptions>(opt =>
{
opt.SuppressModelStateInvalidFilter = true;
});
这样一来,如果 ModelState 无效,它就不会自动返回 400 错误。
关于c# - .NET Core 2.1 覆盖自动模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51125569/