Jscssnet 2023-10-05 01:41 采纳率: 0%
浏览 31
已结题

abpframework中AOP实现自定义过滤器,过滤器不起效

依据

img

创建需要拦截的类

img


创建拦截器

img


绑定拦截器

img


结果是拦截器能被正常的绑定,但是实际效果是并没有触发拦截器,代码运行无报错?(官网提供的例子只能拦截他提供的方法,自定义的方法也无法拦截)

最好有可以远程帮忙解答,将提供答谢,万分感谢

  • 写回答

21条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-05 06:20
    关注
    获得0.80元问题酬金

    或许可以参考下这篇文章: 在ABP中实现自定义拦截器(AOP)

    在ABP框架中使用AOP实现自定义过滤器,过滤器不起效的原因可能是因为拦截器没有被正确注册到ABP框架中。以下是可能的解决方案:

    1. 确保在ApplicationModule或者CoreModule中正确注册BusinessAuditTrailInterceptorRegistrar类。在这个类的PreInitialize方法中添加以下代码:

      Configuration.Interceptors.Add<BusinessAuditTrailInterceptor>();
      
    2. 确保MenuAppService类是由ABP框架管理的服务,即它被ABP框架自动注册为应用服务。你可以在ApplicationModule或者CoreModule的PreInitialize方法中添加以下代码:

      Configuration.Modules.AbpAspNetCore()
          .CreateControllersForAppServices(typeof(ApplicationModule).Assembly);
      
    3. 如果你的MenuAppService类是继承自AbpController的Web API控制器,则需要使用全局拦截器,即在WebCoreModule中添加以下代码:

      Configuration.Interceptors.Add<BusinessAuditTrailInterceptor>();
      

    如果以上解决方案都没有起作用,你可以尝试在菜单服务的方法上添加特性来手动启用拦截器。例如,在你的菜单服务类中的方法上添加[Intercept(typeof(BusinessAuditTrailInterceptor))]特性:

    [Intercept(typeof(BusinessAuditTrailInterceptor))]
    public class MenuAppService : CrudAppService<Menu, MenuDto, int,PagedMenuResultRequestDto>
    {
       //...
    }
    

    4.如果仍然无法触发拦截器,可以尝试在菜单服务类中手动创建一个实例并调用方法,然后检查是否触发了拦截器。这可以帮助你确定问题是否出在拦截器的注册或者使用上。

    public class MenuAppService : CrudAppService<Menu, MenuDto, int, PagedMenuResultRequestDto>
    {
        private readonly BusinessAuditTrailInterceptor _interceptor;
        
        public MenuAppService(BusinessAuditTrailInterceptor interceptor)
        {
            _interceptor = interceptor;
        }
        
        public void DoSomething()
        {
            //...
    
            _interceptor.Intercept(new Invocation(null, null, null)); // 手动调用拦截器
    
            //...
        }
    }
    

    通过这种方式,你可以确定是否在正确的位置注册了拦截器,并且拦截器本身是否能够正常工作。

    5.如果以上解决方案仍然无效,可以考虑查看ABP框架的日志输出,以便更深入地了解问题。确保日志级别已经设置为足够详细,可以看到拦截器相关的日志信息。

    希望以上解决方案能帮助到你解决问题。如果问题仍然存在,请提供更多的代码和信息,以便更好地理解和排查问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 修改了问题 10月5日
  • 创建了问题 10月5日