Execution Order for the ApiController
Assuming the request goes into the ApiController scope, the operation order is as below:
- The
ExecuteAsync
method of theApiController
is invoked. - The
Initialize
method of theApiController
is invoked. - The registered Action Selector is retrieved.
- The
SelectAction
method of the registered action selector is invoked. If only one action method is matched, the pipeline continues. - All registered Filters for the selected action is retrieved.
- The Authorization Filters are called. The authorization filter can decide either to let the pipeline to continue executing or to terminate the pipeline.
- If Authorization Filters didn't terminate the request, action parameter bindings are performed.
ApiController.ModelState
is set.- Action Filters are invoked. The Action Filters can decide either to let the pipeline to continue executing or terminate the pipeline.
- If Action Filters didn't terminate the request, registered Action Invoker is retrieved.
- The
InvokeActionAsync
method of the registered Action Invoker is called to invoked the selected action method. - Note: If any exception occurs from the execution of the Authorization Filters to the execution of the action method, the exception filters are be called.
There are a few more things which happen in between but this is very close to a complete view. Check out the ApiController
source code for more information.
实际使用来看
2019-02-25 16:16:17.668+08:00 INFO [59]: CustomMessageHandler.SendAsync
2019-02-25 16:16:18.107+08:00 INFO [59]: BaseApiController.Initialize