The action method is where all the action happens (pun intended). It is the entry point to the code that handles your request. The found action method is called from the IActionInvoker implementation; it must be a physical, nongeneric, public instance method of a controller class. The action selection mechanism is quite complex and relies on the route action parameter.
The name of the action method should be the same as this parameter, but that doesn't mean that it is the physical method name; you can also apply the [ActionName] attribute to set it to something different, and this is of particular use if we have overloaded methods:
[ActionName("BinaryOperation")]
public IActionResult Operation(int a, int b) { ... }
[ActionName("UnaryOperation")]
public IActionResult Operation(int a) { ... }
In the following sections, we will see how actions work and how they work in the context of the controller.