如题,用于控制器和action上,可做额外操作。
重载“OnActionExecuting”方法,可用于鉴权。(本例未展示)
本例仅示范用法,.net6下调试通过。
要点:
1、名称空间: using Microsoft.AspNetCore.Mvc.Filters;
2、可以通过返回“context.Result”来终止后续Action的执行。它的其他属性见微软文档。
步骤:
1、新建webapi项目(略)
2、过滤器代码:
public class MyFilter:ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext context) { string? t = context.HttpContext.Request.Headers.Host.ToString(); context.Result = new ContentResult() { Content = t }; base.OnActionExecuting(context); } }
3、控制器代码
[Route("api/[controller]/[action]")] [ApiController] public class TestController : ControllerBase { [HttpGet] [MyFilter] public string Get1() { return "ok1"; } [HttpGet] public string Get2() { return "ok2"; } }
4、结果
关于ActionFilter的其他可重写方法,见微软官网。