Filters
Filters in ASP.NET Core allow code to be run before or after specific stages in the request processing pipeline.
Built-in filters handle tasks such as:
Authorization (preventing access to resources a user isn't authorized for).
Response caching (short-circuiting the request pipeline to return a cached response).
Custom filters can be created to handle cross-cutting concerns. Examples of cross-cutting concerns include error handling, caching, configuration, authorization, and logging.
Filters run within the ASP.NET Core action invocation pipeline, sometimes referred to as the filter pipeline. The filter pipeline runs after ASP.NET Core selects the action to execute.
Filter types
Each filter type is executed at a different stage in the filter pipeline:
Authorization filters run first and are used to determine whether the user is authorized for the request. Authorization filters short-circuit the pipeline if the request is unauthorized.
Run after authorization.
OnResourceExecuting can run code before the rest of the filter pipeline. For example,
OnResourceExecuting
can run code before model binding.OnResourceExecuted can run code after the rest of the pipeline has completed.
Action filters can run code immediately before and after an individual action method is called. They can be used to manipulate the arguments passed into an action and the result returned from the action.
Exception filters are used to apply global policies to unhandled exceptions that occur before anything has been written to the response body.
Result filters can run code immediately before and after the execution of individual action results. They run only when the action method has executed successfully.
Implementation
Built-in filter attributes
ASP.NET Core includes built-in attribute-based filters that can be subclassed and customized. For example, the following result filter adds a header to the response:
Attributes allow filters to accept arguments, as shown in the preceding example. Apply the AddHeaderAttribute
to a controller or action method and specify the name and value of the HTTP header:
Last updated