使用AspectCore.DynamicProxy.AbstractInterceptorAttribute定义方法拦截器
public class TestAttribute : AbstractInterceptorAttribute { public override Task Invoke(AspectContext context, AspectDelegate next) { try { //方法调用之前 Console.WriteLine("Before"); return context.Invoke(next); } catch (Exception) { //方法抛异常调用 Console.WriteLine("exception!"); throw; } finally { //方法完成之后调用 Console.WriteLine("After"); } } }
在方法上添加特性,在调用Handle方法之前方法拦截器会被触发执行Invoke方法,但实际运行中方法拦截器并未生效。
[Test] public async Task Handle() { ... }
经过多方查找与不断尝试,发现给Startup类中的ConfigureServices方法添加返回值能够让方法拦截器生效。
public class Startup { ... public IServiceProvider ConfigureServices(IServiceCollection services) { ... return services.BuildServiceContextProvider(); } }
标签:Core,拦截器,Console,...,WriteLine,AOP,方法,public From: https://www.cnblogs.com/uta-red/p/18315610