NetCore自定义过滤器
新建过滤器代码
/// <summary>
/// 结果日志过滤器
/// 接口处理数据完,记录处理后的结果日志
/// </summary>
public class ResultLogFilter : ActionFilterAttribute
{
private readonly ILogger<ResultLogFilter> _logger;
public ResultLogFilter(ILogger<ResultLogFilter> logger)
{
_logger = logger;
}
/// <summary>
/// 控制器中加了该属性的方法中代码执行之前该方法。
/// 代码执行之前执行该方法
/// </summary>
/// <param name="context"></param>
public override void OnActionExecuting(ActionExecutingContext context)
{
base.OnActionExecuting(context);
}
/// <summary>
/// 控制器中加了该属性的方法执行完成后才会来执行该方法。
/// 代码执行后执行该方法
/// </summary>
/// <param name="context"></param>
public override void OnActionExecuted(ActionExecutedContext context)
{
base.OnActionExecuted(context);
_logger.LogInformation(((Microsoft.AspNetCore.Mvc.JsonResult)context.Result).Value.ToString());
}
/// <summary>
/// 控制器中加了该属性的方法执行完成后才会来执行该方法。比OnActionExecuted()方法还晚执行。
/// </summary>
/// <param name="context"></param>
/// <param name="next"></param>
/// <returns></returns>
public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
return base.OnResultExecutionAsync(context, next);
}
}
加入到全局范围中(Startup.cs)
services.AddMvc(options =>
{
options.Filters.Add<ResultLogFilter>();
});