如何使用一次ActionFilter在所有控制器上执行

How to use ActionFilter once to perform on all controller

我有一种情况,我需要在每次 api 调用之前执行一个过滤器,但在 dot net 中,您必须在每个控制器上方编写该过滤器。 [ActionFilterName].

我写了很多控制器,在每个控制器上面写这个标签有点忙。 有什么方法可以在每次控制器执行之前调用此过滤器,而无需将其写在每个控制器上方。 就像我们进入 Java 的 Spring 引导一样,我们不需要在 API 调用之前执行的每个控制器上方写我们的过滤器注释。

我知道这个问题是否与已经问过的问题相似,如果是,请告诉我,我是新来的。

对于 asp.net 核心 2.x,试试这个:

services.AddMvc(options =>
{
    options.Filters.Add(new CustomActionFilter());  
    //or 
    //options.Filters.Add(typeof(CustomActionFilter));      
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

参考:

https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.2#filter-scopes-and-order-of-execution-1

对于 asp.net 核心 3.x,试试这个:

services.AddControllers(config =>
{
    config.Filters.Add(new CustomActionFilter());
});

参考:

https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0#filter-scopes-and-order-of-execution