WebAPI 2 ValidateModelAttribute 未触发

WebAPI 2 ValidateModelAttribute not firing

我有一个自定义 ValidateModelAttribute 但由于某种原因它没有触发

using System.Net;
using System.Web.Http.Controllers;
using System.Net.Http;
using System.Web.Http.Filters;

namespace blank.Utilities.CustomAttributes
{
    public class ValidateModelAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (actionContext.ModelState.IsValid == false)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(
                    HttpStatusCode.BadRequest, actionContext.ModelState);
            }
        }
    }
}

这里是 Post 调用

[ValidateModelAttribute]
[HttpPost]
[Route("update")]
public IHttpActionResult Post(ActivityPctCompleteDto actDto) {
    _activityService.UpdatePctComplete(actDto);
    return Ok();
}

我在 post 中添加了 fromBodyfromUri,但它不起作用。我在这里错过了什么?

这是我的 Dto

public class ActivityPctCompleteDto
{
    [Required(ErrorMessage = "ActivityID is an invalid Guid value.")]
    public Guid? Id { get; set; }

    [Required(ErrorMessage = "PctComplete is an invalid Decimal(5,4) value.")]
    public decimal? PctComplete { get; set; }
}

我试过你的代码,动作过滤器对我来说效果很好。要诊断您的问题,请检查以下内容:

  1. 您正在使用 System.Web.Http.Filters 命名空间中的 ActionFilterAttribute 吗?与来自 System.Web.Mvc.
  2. 的过滤器存在常见的混淆
  3. 您请求的 HTTP 结果是什么?可能它在 ASP.NET 管道的某些早期阶段失败了,比如路由或身份验证?
  4. 您确定正是这个 Post() 方法处理了请求吗?尝试设置断点并检查它是否命中。