如何在 .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()
您已经全局注册了过滤器并且被调用了两次。
我有一个继承自 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()
您已经全局注册了过滤器并且被调用了两次。