我正在尝试在Web API中实现自定义验证。加洛韦关于这个主题的视频中的代码似乎已经改变了。我确实下载了代码和创建操作过滤器的方式:
public class ValidationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest,
actionContext.ModelState);
}
}
}
当我使用错误数据发布到我的api时,这是返回的内容:
{"Message":"The request is invalid.","ModelState":{"user":["First name cannot start with A"]}}
注意ModelState没有显示导致错误的单个字段(如user.FirstName)。
当我运行他们的应用程序时,ModelState确实有字段信息(comment.Author):
{"Message":"The request is invalid.","ModelState":{"comment.Author":["Author is too long! This was validated on the server."]}}
我有相同的动作过滤器和非常相似的帖子后api。为什么我的错误没有显示字段级详细信息?
答案 0 :(得分:0)
您可能确实将IncludeErrorDetailPolicy
设置为“从不”,或者将Web.config文件中的customErrors
设置为其他内容。有关详细信息,请参阅此帖子:http://www.jefclaes.be/2012/08/aspnet-web-api-error-detail-policy-now.html
答案 1 :(得分:0)
显然这是一个已知问题,最近已修复: