如何在 .NET 5 的 Web API 中设置 CustomActionFilter 属性?

How to set CustomActionFilter property in Web API in .NET 5?

我有一个继承自 ActionFilterAttribute 的 class CustomActionFilter,它有一个字符串 属性;当用 Controller Action 注释时,我会向它传递一个值,但在 OnActionExecuting 中,字符串 属性 是 NULL.

这是我的 class:

public class CustomActionFilter : ActionFilterAttribute
{
    public CustomAuthorize()
    {
    }

    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (Test == "1") // Test is null
            base.OnActionExecuting(context);
    }

    public string Test { get; set; }
}

ConfigureServices方法中,我有:

services.AddControllers(p => p.Filters.Add(typeof(CustomActionFilter)));

这段代码在我的控制器中:

[Route("api/[controller]")]
[ApiController]
[Produces("application/json", "application/problem+json")]
public class TestValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    [CustomActionFilter(Test= "test")]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

尝试替换

services.AddControllers(p => p.Filters.Add(typeof(CustomActionFilter)));

services.AddControllers()

您已经全局注册了过滤器并且被调用了两次。