[英]MaxLength decorator is not working with int.MaxValue
鉴于这个基本的 GET 方法:
public Foo Get([FromQuery][MaxLength(int.MaxValue, ErrorMessage ="Custom error message")] int input)
{
// DO THINGS
}
当我实际发送一个大于int.MaxValue
的值时, MaxLength
装饰器不起作用:
https://apiurl/foo?input=9999999999999999999
我得到一个System.OverflowException: 'Value was either too large or too small for an Int32.'
,在到达 MaxLength 验证器之前,在System.Private.CoreLib
是否有一种简单的方法来处理此错误并实际返回我的自定义错误消息,或者我是否必须实现自定义 ModelBinder?
创建自定义属性:
public class CustomNameAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
if (context.Result is BadRequestObjectResult badRequestObjectResult)
if (badRequestObjectResult.Value is ValidationProblemDetails)
{
context.Result = new BadRequestObjectResult("Error message");
}
base.OnResultExecuting(context);
}
}
然后将其添加到您的方法中:
[CustomName]
public Foo Get([FromQuery]int input)
{
// DO THINGS
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.