我希望有一种方法可以拦截将格式错误的json发送到webapi端点时发生的异常,这样我就可以返回语义错误代码,而不仅仅是500.(例如“修复破坏的JSON”或者去地狱“)
答案 0 :(得分:5)
您可以通过从ActionFilterAttribute
public class ValidationFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext
.Request
.CreateErrorResponse(HttpStatusCode.BadRequest,
actionContext.ModelState);
}
}
}
现在,您可以使用它来装饰您的行为:
[HttpGet]
[ValidationFilter()]
public string DoSomethingCool()
或通过config
config.Filters.Add(new ValidationFilterAttribute());