Open Closed

How to Use IInterceptor with [InterceptedBy] or a Custom Attribute with interceptor in ABP 9.1.0? #9625


User avatar
0
ElifKaya created

Hi,

I'm using ABP Framework version 9.1.0 and I want to apply method-level interception using a custom IInterceptor implementation. Ideally, I would like to use either:

The [InterceptedBy] attribute (if available), or A custom attribute that I can define and use to selectively apply interceptors to specific services or methods. However, I couldn't find the InterceptedBy attribute in this version, and AbpCastleProxyOptions also seems to be missing.

My questions:

Is [InterceptedBy] supported in ABP 9.1.0? If so, which package provides it? If not, what is the recommended way to apply a custom interceptor to only specific services or methods? Can I register an interceptor conditionally based on a custom attribute in this version? Thanks in advance for your help!

Check the docs before asking a question: https://abp.io/docs/latest Check the samples to see the basic tasks: https://abp.io/docs/latest/samples The exact solution to your question may have been answered before, and please first use the search on the homepage.

Provide us with the following info: 🧐 Hint: If you are using the ABP Studio, you can see all the information about your solution from the configuration window, which opens when you right-click on the solution and click on the Solution Configuration button.

  • Exception message and full stack trace:
  • Steps to reproduce the issue:

9 Answer(s)
  • User Avatar
    0
    AI-Bot created
    Support Team ABP Agent
    • The [InterceptedBy] attribute is not available in ABP 9.1.0, and AbpCastleProxyOptions has been removed in recent ABP versions.
    • The recommended way to apply a custom interceptor to specific services or methods in ABP 9.1.0 is to register your interceptor globally and, inside your interceptor logic, check for the presence of your custom attribute (as you are already doing). This allows you to conditionally execute logic only for methods or classes marked with your attribute.
    • Conditional registration of interceptors based on a custom attribute is not natively supported in ABP 9.1.0. Instead, you must use the pattern you have implemented: register the interceptor for all services, and inside the interceptor, check for your custom attribute before executing your logic.

    Your current approach—checking for the attribute within the interceptor—is the correct and supported method in ABP 9.1.0.

    No verified source available for this specific query.


    This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.

  • User Avatar
    0
    ElifKaya created

    [AI-Bot] said:

    • The [InterceptedBy] attribute is not available in ABP 9.1.0, and AbpCastleProxyOptions has been removed in recent ABP versions.
    • The recommended way to apply a custom interceptor to specific services or methods in ABP 9.1.0 is to register your interceptor globally and, inside your interceptor logic, check for the presence of your custom attribute (as you are already doing). This allows you to conditionally execute logic only for methods or classes marked with your attribute.
    • Conditional registration of interceptors based on a custom attribute is not natively supported in ABP 9.1.0. Instead, you must use the pattern you have implemented: register the interceptor for all services, and inside the interceptor, check for your custom attribute before executing your logic.

    Your current approach—checking for the attribute within the interceptor—is the correct and supported method in ABP 9.1.0.

    No verified source available for this specific query.


    This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.

    I'm using ABP Framework version 9.1.0 and I have created:

    A custom attribute (e.g., [CheckBaseModelProviderAttribute]) A class implementing IInterceptor (e.g., CheckBaseModelProviderInterceptor) I apply the attribute to some application services, and I can confirm that the attribute is being hit (debug point works). However, the interceptor itself is not being triggered.

    My goal is to ensure that whenever a service or method is decorated with [CheckBaseModelProviderAttribute], the CheckBaseModelProviderInterceptor logic runs.

    My questions:

    How should I register this interceptor in MyProjectModule.cs (inside ConfigureServices) so that it works with the custom attribute? Is there a way in ABP 9.1.0 to conditionally apply an interceptor based on a custom attribute? Is AbpCastleProxyOptions available in this version, or is there an alternative way to wire up the interceptor? Thanks in advance for your help!

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Can you share a demo project with your code?

    I will check it.

    liming.ma@volosoft.com

    Thanks

  • User Avatar
    0
    ElifKaya created

    [maliming] said: hi

    Can you share a demo project with your code?

    I will check it.

    liming.ma@volosoft.com

    Thanks

    I have already Attribute.cs and Interceptor.cs. I want to continue with my custom solution. But, how should I configure my interceptor in ConfigureServices. Or, If you have any example to manage an interceptor for an application service, could you please send me the example link?

    .

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Hi

    You can share the test project , I will add the code for interception.

    Thanks.

  • User Avatar
    0
    ElifKaya created

    [maliming] said: Hi

    You can share the test project , I will add the code for interception.

    Thanks.

    I send test project, thank you so much

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    public class MyModuleApplicationModule : AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.AddAutoMapperObjectMapper<MyModuleApplicationModule>();
            Configure<AbpAutoMapperOptions>(options =>
            {
                options.AddMaps<MyModuleApplicationModule>(validate: true);
            });
    
            context.Services.OnRegistered(CheckBaseModelProviderInterceptorRegistrar.RegisterIfNeeded);
        }
    }
    
    public class CheckBaseModelProviderInterceptorRegistrar
    {
        public static void RegisterIfNeeded(IOnServiceRegistredContext context)
        {
            if (ShouldIntercept(context.ImplementationType))
            {
                context.Interceptors.TryAdd<CheckBaseModelProviderInterceptor>();
            }
        }
    
        private static bool ShouldIntercept(Type type)
        {
            return !DynamicProxyIgnoreTypes.Contains(type) &&
                   //typeof(ISampleAppService).IsAssignableFrom(type) && // Uncomment this line if you want to restrict to specific interfaces
                   (type.GetCustomAttributes(true).OfType<CheckBaseModelProviderAttribute>().Any() ||
                   type.GetMethods().Any(x => x.IsDefined(typeof(CheckBaseModelProviderAttribute), inherit: true)));
        }
    }
    
    

  • User Avatar
    0
    ElifKaya created

    Thank you so much !

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    You're welcome. : )

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 01, 2025, 08:37